2013-02-05 47 views
0
def update_text(self, info): 
     index = { 
      "username":self.username, 
      "online status":self.online_status, 
      "dial status":self.dialing_status, 
      "dtmf transfer number":self.DTMF_t_num, 
      "dtmf number":self.DTMF_num, 
      "program status":self.program_status, 
      "credits":self.credits} 
     text = index[info[0]] 
     data = info[1] 
     append = info[2] 
     if append: 
      current = text.GetLabel() 
      text.SetLabel(current + " " +data) 
     else: 
      text.SetLabel(data) 

爲什麼不更新它所指的wx.StaticText? 「索引」中的每個變量均指靜態文本。WxPython StaticText動態更新

回答

2

沒有一些可運行的代碼很難說。我做了我自己的事情,並使其工作:

import random 
import wx 

######################################################################## 
class MyPanel(wx.Panel): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """Constructor""" 
     wx.Panel.__init__(self, parent) 

     self.username = wx.StaticText(self, label="username") 
     self.online_status = wx.StaticText(self, label="offline") 
     self.dialing_status = wx.StaticText(self, label="no dial tone") 

     btn = wx.Button(self, label="Update") 
     btn.Bind(wx.EVT_BUTTON, self.onUpdate) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(self.username, 0, wx.ALL, 5) 
     sizer.Add(self.online_status, 0, wx.ALL, 5) 
     sizer.Add(self.dialing_status, 0, wx.ALL, 5) 
     sizer.Add(btn, 0, wx.ALL, 5) 
     self.SetSizer(sizer) 

    #---------------------------------------------------------------------- 
    def update_text(self, info): 
     """""" 
     index = { 
      "username":self.username, 
      "online status":self.online_status, 
      "dial status":self.dialing_status 
      } 
     text = index[info[0]] 
     data = info[1] 
     append = info[2] 
     if append: 
      current = text.GetLabel() 
      text.SetLabel(current + " " + data) 
     else: 
      text.SetLabel(data) 

    #---------------------------------------------------------------------- 
    def onUpdate(self, event): 
     """""" 
     info = random.choice(
      [("username", "mork89", 1), 
      ("online status", "online", 0), 
      ("dial status", "dialing", 1) 
      ]) 
     self.update_text(info) 

######################################################################## 
class MainFrame(wx.Frame): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, title="Dynamic StaticText") 
     panel = MyPanel(self) 
     self.Show() 

if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MainFrame() 
    app.MainLoop() 

也許我的代碼將幫助你弄清楚你的。

+0

最有用的,但我仍然不知道你正在做的是什麼與我是什麼不同!它太刺激了! –

+0

我也不知道。發佈一個可運行的小問題的例子總是一個好主意。 –