wxPython规范问题(跳过)

时间:2009-08-05 21:33:07

标签: python wxpython

Pastebin link:http://pastebin.com/f40ae1bcf

问题:我制作了一个wx.Gauge,范围是50.然后是一个在程序空闲时更新Gauge值的函数。当仪表填充大约50%时,它会清空,并且暂时不显示任何内容。当它这样做时,该值实际上是50,我认为当值为50时,它应该是满的。

为什么这样做?我也尝试使用wx.Timer而不是绑定到wx.EVT_IDLE,但我没有运气。

3 个答案:

答案 0 :(得分:1)

一些事情。

  • 我无法在我的iMac上重现这一点,它会一路走来。 Python 2.5.4,wxPython 2.8.9.2
  • 闲置事件可能会在奇怪的时候发生。尝试将print event添加到您的空闲处理程序,以确切了解这些事件何时到来。计时器是最好的。仪表移动得非常快或闪烁吗?
  • 您可以尝试调用gauge.Update()来强制完成重绘。
  • 我总是只用100作为我的标尺限制,也许只是尝试一下。

比计时器更简单的方法是:

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.count = 0
        self.gauge = wx.Gauge(panel, -1, 50, (20, 50), (250, 25))
        self.update_gauge()

    def update_gauge(self):
        self.count = self.count + 1
        if self.count >= 50:
            self.count = 0
        self.gauge.SetValue(self.count)
        wx.CallLater(100, self.update_gauge)

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

答案 1 :(得分:0)

您确定发布的代码是给您提供问题的代码吗?这段代码看起来非常类似于wxPython的演示代码,并且在我的机器上运行没有问题。

如果您确实将仪表的值设置为50,那可能是您的问题。你必须确保不要超过wx.Gauge的范围。如果范围是50,则可以在其中设置的最高值为49。

答案 2 :(得分:0)

经过多次测试后,我发现必须覆盖2个单位的范围才能在完全充满时显示标尺。 在Windows Vista上似乎不会导致问题。它会在linux或mac上引起问题吗?