我希望能夠運行並停止來自我的GUI的腳本/模塊而不會阻塞它。我學習了一些關於在GUI代碼中線程化並執行「簡單」長任務的基本知識。然而,所有的例子都是關於簡單的while
或for
循環,可以中止。在大多數情況下,這是一種計數。Wx.Python非阻塞GUI啓動和停止腳本/模塊
所以問題是:如何使用基於wx.python的GUI來運行/停止外部腳本/模塊?腳本沒什麼特別,它可以是任何類型的長期任務。
這裏是基本的wx.Python示例代碼!
import wx
class MyApp (wx.App):
def OnInit(self):
self.frame = MyFrame(None, title = 'Example')
self.SetTopWindow(self.frame)
self.frame.Show()
return True
class MyFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title ,style = (wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN))
button1 = wx.Button(self,-1,'Start')
button2 = wx.Button(self,-1, 'Stop')
self.gauge1 = wx.Button(self, -1)
box = wx.BoxSizer(wx.VERTICAL)
box.Add(button1,1, wx.ALL, 10)
box.Add(button2,1, wx.ALL, 10)
box.Add(self.gauge1,1,wx.EXPAND|wx.ALL,10)
self.SetSizer(box, wx.EXPAND)
self.Bind(wx.EVT_BUTTON, self.OnStart, button1)
self.Bind(wx.EVT_BUTTON, self.OnStop, button2)
def OnStart(self,e):
pass
def OnStop(self,e):
pass
if __name__=='__main__':
app = MyApp(False)
app.MainLoop()
我沒有與計數任何問題。我不會以簡單的形式使用長時間運行的任務。我將使用一些外部腳本,所以我只需要一種方法來啓動或停止使用按鈕的腳本。 – Domagoj 2013-03-01 13:44:12