wxpython仪表不脉冲

2024-05-20 17:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力让一个仪表条在一个子进程运行时产生脉冲,所以我回到了基础,得到了这个基本代码,但仍然不起作用

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定时器另一个设置为脉冲。当我取下定时器时,设置为脉冲的仪表停止工作。在

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

这是对的吗?在

我试着增加

^{pr2}$

以及

self.gauge.Refresh(True)

但两者似乎都没有帮助

有人知道解决办法吗

谢谢


Tags: 代码importselfapp进程init仪表脉冲
1条回答
网友
1楼 · 发布于 2024-05-20 17:21:38

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

但是如果你只是想愚弄进程,那么是的,你应该把它绑定到计时器。在init中调用它没有任何意义。在

我修改了示例演示代码只是为了糊弄一下,如果你真的想在不确定的模式下运行它,你可以把它绑定到你的子进程上,设置一些检查点,增加/降低测量速度。在

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()

相关问题 更多 >