wxPython unexpected exit

Jimmy mcknight0219 at gmail.com
Fri Sep 7 04:10:17 EDT 2007


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!




More information about the Python-list mailing list