ボタン一つで時系列的に色を表示したい
wxPythonのボタンの処理内に複数の処理を書くと実行はされますが、時系列的でなく途中結果が見れません。
発生している問題・エラーメッセージ
例として信号機のプログラムを書きました。期待する動作は
青→黄色→(2秒)→赤→(2秒)→青と順次表示してほしいのですが。
実際は
青→(4秒)→青となってしまいます。
強制的に更新?するプログラムなどはあるのでしょうか。
それとも.SetBackgroudColour()がいけないのでしょうか。
はたまたこのようなことは仕様上できないのでしょうか。
よろしくお願いします。
該当のソースコード
python
1import wx 2from time import sleep 3 4 5class TrafficLight(wx.Frame): 6 def __init__(self): 7 wx.Frame.__init__(self, None, wx.ID_ANY, size=(330, 200)) 8 9 blue = wx.Panel(self, wx.ID_ANY, pos=(0, 0), size=(100, 100)) 10 self.blue = blue 11 yellow = wx.Panel(self, wx.ID_ANY, pos=(102, 0), size=(100, 100)) 12 self.yellow = yellow 13 red = wx.Panel(self, wx.ID_ANY, pos=(204, 0), size=(100, 100)) 14 self.red = red 15 btm = wx.Button(self, wx.ID_ANY, pos=(102, 105), size=(100, 100)) 16 17 blue.SetBackgroundColour('green') 18 19 btm.Bind(wx.EVT_BUTTON, self.OnTraffic) 20 21 def OnTraffic(self, event): 22 self.blue.SetBackgroundColour(None) 23 self.yellow.SetBackgroundColour('yellow') 24 sleep(2) 25 self.yellow.SetBackgroundColour(None) 26 self.red.SetBackgroundColour('red') 27 sleep(2) 28 self.red.SetBackgroundColour(None) 29 self.blue.SetBackgroundColour('green') 30 self.Refresh() 31 32 33if __name__ == '__main__': 34 app = wx.App() 35 frame = TrafficLight().Show() 36 app.MainLoop() 37

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/13 07:30