GUIに表示されるテキストを特定の時間間隔で変更したい。多くのアプローチの結果、特に私の要件に対して、time.sleep()
の代わりに使用する必要があることがわかりましたwx.Timer
が、 time.sleep()
GUI全体をフリーズします。これが私のコードの例です:
import wx
import time
DWELL_TIMES = [1, 2, 1, 3]
SCREEN_STRINGS = ['nudge nudge', 'wink wink', 'I bet she does', 'say no more!']
class DM1(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
panel = wx.Panel(self)
text_display = wx.StaticText(panel, pos = (400, 150))
for dwell_time in DWELL_TIMES:
text_display.SetLabel(SCREEN_STRINGS[dwell_time])
time.sleep(float(DWELL_TIMES[dwell_time]))
app = wx.App()
DM1Frame = DM1(None, size = (800, 600))
DM1Frame.Center()
DM1Frame.Show()
app.MainLoop()
なぜこれが起こるのか、そしてGUIをブロックしないようにする方法を誰かが知っていますか?それは私を助けることができると思いThreading
ますね?もしそうなら、このコード内にスレッドを配置する正しい方法はどれですか?に代わるものはありThreading
ますか?
どうもありがとう!