wxPython unexpected exit
kyosohma at gmail.com
kyosohma at gmail.com
Fri Sep 7 09:42:20 EDT 2007
On Sep 7, 3:10 am, Jimmy <mcknight0... at gmail.com> wrote:
> 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!
If you use threads that update the GUI, you need to take a look at the
following wiki page:
http://wiki.wxpython.org/LongRunningTasks
I've used the techniques therein and they *just work*. I'm not sure if
you can set values on items in a list or not. I've tried that sort of
thing and sometimes it works and sometimes it doesn't.
The wxPython group is probably the best place to ask these questions
anyway: http://www.wxpython.org/maillist.php
Mike
More information about the Python-list
mailing list