2011-08-10 27 views
0

私はwxPythonで新しく、1つの問題を解決できません。私は継続的にパネルをクロック値で更新する必要があります。私は解決策がありますが、この場合、通常はウィンドウを閉じることができません(alt + f4は機能しません)。 また、.Update .Refreshと.Destroyを呼び出す必要がある場合の違いは何ですか?wxPython continiuouly updateパネル

wxPythonでプログラミングするには良い人がいますか? ありがとうございました。

class TimeDatePanel(wx.Panel): 
def __init__(self, parent, ID=ID_TIMEDATE, pos=wx.DefaultPosition, size=(50, 50), controller=None): 
    wx.Panel.__init__(self, parent, ID, pos, size, wx.RAISED_BORDER) 
    self.controller = controller 
    transCoded = controller.transCodes 
    layout = wx.GridSizer(5,2,0,10) 
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Time & Date"))) 
    layout.Add(wx.StaticText(self, wx.ID_ANY, ""), 0,flag=wx.ALL) 
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Local time")), 0,flag=wx.ALL|wx.ALIGN_RIGHT) 
    self.LT = wx.StaticText(self, wx.ID_ANY, "") 
    layout.Add(self.LT) 
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("UTC")), 0,flag=wx.ALL|wx.ALIGN_RIGHT) 
    self.UTC = wx.StaticText(self, wx.ID_ANY, "") 
    layout.Add(self.UTC) 
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Julian day")), 0,flag=wx.ALL|wx.ALIGN_RIGHT) 
    self.JD = wx.StaticText(self, wx.ID_ANY, "") 
    layout.Add(self.JD) 
    layout.Add(wx.StaticText(self, wx.ID_ANY, transCoded.get("Local sidereal time")), 0,flag=wx.ALL|wx.ALIGN_RIGHT) 
    self.LST = wx.StaticText(self, wx.ID_ANY, "") 
    layout.Add(self.LST) 
    self.SetSizer(layout) 
    self.updateTimeDate() 
    self.Fit() 

    wx.EVT_PAINT(self, self.onPaint) 

def onPaint(self, event=None): 
    self.updateTimeDate() 

def updateTimeDate(self): 
    mechanics = self.controller.mechanics 
    self.LT.SetLabel(str(mechanics.getLT())) 
    self.UTC.SetLabel(str(mechanics.getUTC())) 
    self.JD.SetLabel(str(mechanics.getYD())) 
    self.LST.SetLabel(str(mechanics.getLST())) 

答えて

2

あなたは時計がしょっちゅう更新が必要な場合は、その理由AnalogClock、LEDNumberCtrlまたはwx.Timerで更新されます多分TimeCtrlを使わないのでしょうか?次のチュートリアルでは、タイマーの部分を手助けします:http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/

最初の2つのウィジェットが自動的に更新されます。 StaticTextコントロールや他の通常のウィジェットの値を置いたままにするときは、Update、RefreshまたはLayoutを呼び出す必要があります。 SetValueまたはSetLabelを代わりに使用してください。

Robin Dunnには、 "wxPython in Action"と呼ばれる古い書籍がありますが、これはまだ大部分が素晴らしいです。今年出されたCody PrecordのwxPython Cookbookもあります。

+0

助けてくれてありがとうございました – ekitru

関連する問題