[PROBLEM] Если я нажму кнопку, которая запускает функцию, тогда gui замерзнет, пока функция не завершится.Как предотвратить зависание gui в wxpython?
[КОД]
import wx
app = wx.App(redirect=False)
top = wx.Frame(None)
top.Maximize(True) # Set to maximize the application
sizer = wx.GridBagSizer()
def testFunction(event):
import pyautogui
import time
pyautogui.FAILSAFE = False
for i in range(2):
pyautogui.hotkey('win','r')
time.sleep (0.5)
pyautogui.typewrite('cmd.exe')
time.sleep (0.5)
pyautogui.hotkey('enter')
time.sleep (0.5)
time.sleep (3)
addButton = wx.Button(top, -1, "Start", style=wx.BU_EXACTFIT)
sizer.Add(addButton, (6, 8), (2, 14), wx.EXPAND)
top.Bind(wx.EVT_BUTTON, testFunction, addButton)
top.Sizer = sizer
top.Sizer.Fit(top)
top.Show()
app.MainLoop()
[Ток] Графический интерфейс замерзает, пока функция не заканчивается.
[ЖЕЛАЕМ] Гви не следует замерзать. Примечание: Я думаю, что это связано с потоками, но я не могу понять эту концепцию.
Используйте темы. Здесь у вас есть пример для добавления их в GUI в wxPython: http://wiki.wxpython.org/Non-Blocking%20Gui – tglaria