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

Reply via email to