wxPython unexpected exit

Jimmy mcknight0219 at gmail.com
Sat Sep 8 13:27:27 EDT 2007


On Sep 7, 9:42 pm, kyoso... at gmail.com wrote:
> 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

Thanks for your help! It seems work!
Another question: I create a progress bar, and on creation, it will be
displayed,
How can I invisualize it when later I no longer need it?




More information about the Python-list mailing list