GUIからスクリプト/モジュールをブロックせずに実行および停止できるようにしたい。GUIコード内での「単純な」長いタスクのスレッド化と実行に関するいくつかの基本的なことを学びました。ただし、すべての例は、バイアボートできる単純なループwhile
またはfor
ループに関するものです。ほとんどの場合、それはある種のカウントです。
したがって、問題は次のとおりです。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()