Hi, wxPython is cool and easy to use, But I ran into a problem recently when I try to write a GUI. The thing is I want to periodically update the content of StatixText object, so after create them, I pack them into a list...the problem comes when I later try to extract them from the list! I don't know why? my code is as following:
import wx, socket import thread class MyFrame(wx.Frame): firstrun = 0 def __init__(self): wx.Frame.__init__(self, None, -1, 'Notifier') self.panel = wx.Panel(self, -1) self.length = 50 self.scale = 0.6 self.count = 5 self.size = wx.Frame.GetSize(self) self.distance = self.size[1] / self.count self.labellist = [] self.gaugelist = [] def ParseAndDisplay(self, data): print "Successful access to main Frame class" print 'And receive data: ', data if MyFrame.firstrun == 0: print 'First time run' items = 3 for i in range(items): self.labellist.append(wx.StaticText(self.panel, -1, data+str(i), (150, 50+i*20), (300,30))) MyFrame.firstrun = 1 else: self.labellist[0].SetLabel('AAA')//PROGRAM WILL ABORT HERE!!! self.labellist[1].SetLabel("Guo") self.labellist[2].SetLabel("Qiang") class NetUdp: def __init__(self): self.port = 8081 self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.s.bind(("", self.port)) print "Listening on port", self.port def recvdata(self): data, addr = self.s.recvfrom(1024) return data def netThread(): netudp = NetUdp() while True: data = netudp.recvdata() frame.ParseAndDisplay(data) if __name__ == '__main__': firstrun = 0 app = wx.PySimpleApp() frame = MyFrame() frame.Show() # start network thread first id = thread.start_new_thread(netThread, ()) # main wxpython loop begins app.MainLoop() I know the code is ugly, but can anyone really save me here! -- http://mail.python.org/mailman/listinfo/python-list