wxPython 使用计时器每 x 秒/分钟更新一次 StaticText

Das*_*pez 2 python wxwidgets wxpython

我正在尝试使用计时器和函数的输出来更新一些静态文本。

代码在这里:代码

我对 wxPython 知之甚少,这是我不明白的许多事情之一,这令人抓狂,如果我打印 apper 的输出来控制台它可以完美运行,我想要做的就是将打印出来的内容打印到控制台应用于文本。

我究竟做错了什么?

Fog*_*ird 5

定时器使用起来很麻烦,更简单的方法是使用函数wx.CallAfter和/或wx.CallLater- 这些函数也是线程安全的,可用于从其他工作线程调用 GUI 线程上的函数。这是一个示例...

import random
import wx

class Frame(wx.Frame):
    def __init__(self):
        super(Frame, self).__init__(None)
        self.SetTitle('Title')
        panel = wx.Panel(self)
        style = wx.ALIGN_CENTRE | wx.ST_NO_AUTORESIZE
        self.text = wx.StaticText(panel, style=style)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.AddStretchSpacer(1)
        sizer.Add(self.text, 0, wx.EXPAND)
        sizer.AddStretchSpacer(1)
        panel.SetSizer(sizer)
        self.on_timer()
    def on_timer(self):
        self.text.SetLabel(str(random.randint(0, 100)))
        wx.CallLater(1000, self.on_timer)

if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show()
    app.MainLoop()
Run Code Online (Sandbox Code Playgroud)