我想以特定的时间间隔更改我的 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
吗?
非常感谢!