python - wxpython 仪表没有脉冲

标签 python wxpython

当子进程运行时,我正在努力让仪表条发出脉冲,所以我回到了基础知识并得到了这个仍然不起作用的基本代码

import wx

class GaugeFrame(wx.Frame):
def __init__(self):
    wx.Frame.__init__(self, None, -1, 'Gauge Example', size=(350, 150))
    panel = wx.Panel(self, -1)
    self.gauge = wx.Gauge(panel, -1, 50, (20, 50), (250, 25))
    self.gauge.Pulse()

app = wx.PySimpleApp()
GaugeFrame().Show()
app.MainLoop()

我尝试过 wxpython 示例,其中显示了两个仪表,一个使用 wx.Timer,另一个设置为脉冲。当我移除计时器时,设置为脉冲的仪表停止工作。

因此,我只能认为即使设置为脉冲的仪表也需要有一个计时器。

这是正确的吗?

我尝试添加

self.gauge.Refresh()

self.gauge.Refresh(True)

但似乎都没有帮助

谁知道解决办法

谢谢

最佳答案

来自Gauge document ,你需要在取得一些进展后定期调用它。您必须一次又一次地调用它才能显示进度,Pulse 用于不确定模式,但您可以移动一点以向用户表明已经取得了一些进展。

但是,如果您只是想愚弄进度,那么您应该将其绑定(bind)到计时器。仅仅在 init 中调用它没有任何意义。

我修改了示例演示代码只是为了闲逛,如果您确实想在不确定模式下运行它,您可以将其绑定(bind)到子进程并设置一些检查点并增加/减少仪表速度。

import wx

class GaugeFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Gauge Example', size=(350, 150))
        panel = wx.Panel(self, -1)
        self.fool = 0
        self.gspeed = 200
        self.gauge = wx.Gauge(panel, -1, 50, (20, 50), (250, 25))
        self.timer = wx.Timer(self)
        self.timer.Start(self.gspeed)
        self.Bind(wx.EVT_TIMER, self.TimerHandler)

    def __del__(self):
        self.timer.Stop()

    def TimerHandler(self, event):
        self.fool = self.fool+1
        if self.fool == 20:
            self.fool = 0
            self.gspeed = self.gspeed - 20
            if self.gspeed <= 0:
                self.timer.Stop()
                self.ShowMessage()
                self.Close()
            else:
                self.timer.Start(self.gspeed)
        self.gauge.Pulse()

    def ShowMessage(self):
        wx.MessageBox('Loading Completed', 'Info', wx.OK | wx.ICON_INFORMATION)


app = wx.PySimpleApp()
GaugeFrame().Show()
app.MainLoop()

关于python - wxpython 仪表没有脉冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262113/

相关文章:

linux - wx.SYS_COLOUR_WINDOW - 这些系统颜色在哪里设置?

python - Django 中的空白 URL 模式

python - 如何让 Python 线程优雅地完成

python - wxPython 面板在 Windows 中重绘

python - 响应 Listctrl 变化恰好一次

python - 多个 wx.Yield() 替代方案

python - Timedelta 索引的 IF Else 条件

python - 为什么 "tuple([0])"打印为 "(0, )"?

python - 从列表中调用一个类

python - wxPython GUI - 它可以与 Java GUI 或 Visual Studio GUI 相比吗?