Проблема с датчиком wxPython (пропуск) - PullRequest
1 голос
/ 06 августа 2009

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

Проблема: я сделал wx.Gauge с диапазоном 50. Затем функция, которая обновляет значение Gauge, когда программа простаивает. Когда датчик заполнен примерно на 50%, он опустошается и некоторое время ничего не показывает. На самом деле это значение равно 50, и я думаю, что при значении 50 оно должно быть полным.

Почему он это делает? Я также попытался использовать wx.Timer вместо привязки к wx.EVT_IDLE, но мне не повезло.

Ответы [ 3 ]

1 голос
/ 06 августа 2009

Несколько вещей.

  • Я не могу воспроизвести это на моем 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()
0 голосов
/ 06 августа 2009

После дополнительных тестов я обнаружил, что я должен переопределить диапазон 2 единиц, чтобы отображать датчик при полном заполнении. На Windows Vista это не вызывает проблем. Это вызывает проблемы на Linux или Mac?

0 голосов
/ 06 августа 2009

Вы уверены, что код, который вы разместили, является кодом, который вызывает у вас проблемы? Этот код очень похож на демонстрационный код для wxPython и работает на моей машине без проблем.

Если вы действительно установили значение вашего датчика на 50, это может быть вашей проблемой. Вы должны быть уверены, что не превышаете этот диапазон wx.Gauge. Если диапазон равен 50, самое высокое значение, которое вы можете установить в нем, будет 49.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...