wxPython规格问题(跳过)

2024-05-23 20:19:32 发布

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

Pastebin链接:http://pastebin.com/f40ae1bcf

问题是:我做了一个wx.量规,范围为50。然后是一个在程序空闲时更新仪表值的函数。当压力计充满约50%时,它会排空,并在一段时间内不显示任何东西。当它这样做时,它的值实际上是50,我认为当值为50时,它应该是满的。在

它为什么要这样做?我也试过用wx定时器而不是绑定到wx.EVT_空闲但我运气不好。在


Tags: 函数程序comhttp链接仪表空闲wx
3条回答

你确定你发布的代码就是给你带来问题的代码吗?这段代码看起来非常类似于wxPython的演示代码,在我的机器上正常工作。在

如果你真的把你的仪表值设为50,那可能是你的问题。你必须确保不超过wx.量规. 如果范围是50,则可以在其中设置的最大值为49。在

经过更多的测试后,我发现我必须覆盖2个单位的范围,以便在完全充满时显示仪表。 在WindowsVista上,它似乎不会引起问题。它会在linux或mac上引起问题吗?在

有几件事。在

  • 我不能在我的iMac上复制这个,它一直到满。Python 2.5.4、wxPython 2.8.9.2
  • 无聊的事情会在奇怪的时候出现。尝试将print event添加到空闲处理程序中,以查看这些事件的确切时间。最好有个计时器。仪表的移动真的很快还是闪烁?在
  • 你可以试着打电话仪表更新()以强制完全重画。在
  • 我总是用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()

相关问题 更多 >