[Pythonmac-SIG] app does not run when launched via main.py import was:py2app- python code packed in clear ascii
Christopher Barker
Chris.Barker at noaa.gov
Thu Nov 20 18:13:43 CET 2008
the Shelter wrote:
> However, now I face a strange problem even before I build an app bundle. the mainfile.py runs perfect when launched alone.
> But when run via main.py it hangs when Upload button is presses.
hmmm - it really should hang in either case....
> I susspect either wx.callback or the thread-
I do think that's it. You can't use wx GUI calls form a different thread
than wx was started in (usually the main thread). See the wxPython Wiki
under "long running tasks", plus various discussions on the
wxpython-users list.
> def OnStartUpload(self,evt):
> thread.start_new(self.FtpUp,())
this is running FtlUp in a new thread.
> def FtpUp(self):
> #start pulsing the gauge
> self.g1.Pulse()
> #disable the Upload button
> self.start_upload_button.Enable(False)
> #the progress dialog
> #connect to the ftp server
> ftp = FTP("192.168.0.1")
> ftp.login("username", "password")
> trans_file = open(pdffile)
> print trans_file
> #FTPprogress = FTPProgressDialog(filename)
> ftp.newstorbinary("STOR " + serial + "_" + fo_choice + "_" + tail1, trans_file, callback=self.wxcallback)
>
> trans_file.close()
> ftp.close()
>
> #set gauge to 100% caus it hangs at 99.9% although 100%
> self.g1.SetValue(230)
> self.t8.SetLabel("Percent: 100.00")
> self.t9.SetLabel("Kb: " + str(self.filesize) + " of " + str(self.filesize))
and here you are making wx calls. That does cause problems.
What you need to do is wrap up these calls in a method, say
self.UpdateProgress(), and call that method with:
wx.CallAfter(self.UpdateProgress)
that should do it. There are other ways that you can read about if this
isn't going to work for you.
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the Pythonmac-SIG
mailing list