2016-10-26 4 views
0

Я хочу динамически обновлять несколько статических текстов, поскольку я знаю, как обновлять только один статический текст.Как динамически обновлять статический текст wxpython?

Ниже мой код:

import os 
import time 
import datetime 

current_time = datetime.datetime.strftime(datetime.datetime.now(), '%d- %m-%Y %H:%M:%S') 
try: 
    import wx 
except ImportError: 
    raise ImportError, "The wxPython module is required to run this program." 

class simpleapp_wx(wx.Frame): 
    def __init__(self,parent,id,title): 
     wx.Frame.__init__(self,parent,id,title, size =(500,300)) 
     self.SetBackgroundColour(wx.BLUE) 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 
     sizer = wx.GridBagSizer() 
     font = wx.Font(20, wx.DECORATIVE, wx.ITALIC, wx.NORMAL) 
     self.SetFont(font) 


     self.label = wx.StaticText(self,-1,label=u'Time Updated - 1: {}'.format(current_time)) 
     self.label.SetBackgroundColour(wx.BLUE) 
     self.label.SetForegroundColour(wx.WHITE) 
     sizer.Add(self.label, (4,0),(1,5),wx.EXPAND) 
     self.on_timer() 

     self.SetSizer(sizer) 
     self.Show(True) 

    def on_timer(self): 
     current_time = datetime.datetime.strftime(datetime.datetime.now(), '%d-%m-%Y %H:%M:%S') 
     self.label.SetLabel(label=u'Time Updated -1 : {}'.format(current_time)) 
     wx.CallLater(1000, self.on_timer) 

if __name__ == "__main__": 
    app = wx.App() 
    frame = simpleapp_wx(None,-1,'Rain Sensor') 
    app.MainLoop() 

Я попытался добавить еще один статический текст в том же классе и создать еще один CallLater, но это только обновит последний статический текст ...

ответ

0

Код ниже работает хорошо на моей машине, Win7 x86, WxPython 3.0.2

import os 
import time 
import datetime 

current_time = datetime.datetime.strftime(datetime.datetime.now(), '%d- %m-%Y %H:%M:%S') 
try: 
    import wx 
except ImportError: 
    raise ImportError, "The wxPython module is required to run this program." 

class simpleapp_wx(wx.Frame): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title, size=(500, 300)) 
     self.SetBackgroundColour(wx.BLUE) 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 
     sizer = wx.GridBagSizer() 
     font = wx.Font(20, wx.DECORATIVE, wx.ITALIC, wx.NORMAL) 
     self.SetFont(font) 

     self.label = wx.StaticText(self, -1, label=u'Time Updated - 1: {}'.format(current_time)) 
     self.label2 = wx.StaticText(self, -1, label=u'Time Updated - 2: {}'.format(current_time)) 
     self.label.SetBackgroundColour(wx.BLUE) 
     self.label.SetForegroundColour(wx.WHITE) 
     self.label.SetBackgroundColour(wx.BLUE) 
     self.label2.SetForegroundColour(wx.WHITE) 
     sizer.Add(self.label, (4, 0), (1, 5), wx.EXPAND) 
     sizer.Add(self.label2, (5, 0), (1, 5), wx.EXPAND) 
     self.on_timer() 
     self.on_timer2() 

     self.SetSizer(sizer) 
     self.Show(True) 

    def on_timer(self): 
     current_time = datetime.datetime.strftime(datetime.datetime.now(), '%d-%m-%Y %H:%M:%S') 
     self.label.SetLabel(label=u'Time Updated -1 : {}'.format(current_time)) 
     wx.CallLater(1000, self.on_timer) 

    def on_timer2(self): 
     current_time = datetime.datetime.strftime(datetime.datetime.now(), '%d-%m-%Y %H:%M:%S') 
     self.label2.SetLabel(label=u'Time Updated -2 : {}'.format(current_time)) 
     wx.CallLater(1000, self.on_timer2) 

if __name__ == "__main__": 
    app = wx.App() 
    frame = simpleapp_wx(None, -1, 'Rain Sensor') 
    app.MainLoop() 

Я только что создал еще один ярлык label2, поместите его в классификаторе и создал ANO ther on_timer2 и вызвал с wx.CallLater

+0

поблагодарить я все еще новичок в wxpython. теперь я знаю, как сделать свое обновление моего проекта из этого примера кода .... – anubismmt

+0

@anubismmt Если это отвечает на ваш вопрос, вы должны принять его и/или опросить его как полезный. См. Http://stackoverflow.com/help/accepted-answer –

+0

Прошу прощения, поскольку я все еще новичок в переполнении стека, поскольку я просто присоединяюсь к этому сообществу на прошлой неделе. – anubismmt