2013-11-28 38 views
1

我奮力而子進程中運行,所以我已經回到基本知識,並得到了這個基本的代碼,仍然不能正常工作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) 

但既不似乎幫助

任何人都知道解決的

感謝

回答

1

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

因此,它沒有辦法讓它在啓動之前脈衝消失,直到我設置self.gauage.SetValue(100)這會顯示用戶它已完成? – tjmgis

+0

是的,即使我對wxpython也是新手......但這就是我從文檔中瞭解到的。 – DevC