Tkinter deadlock on graceful exit

Matteo Landi matteo at matteolandi.net
Sun Jun 3 04:15:35 EDT 2012


On Jun/02, Dennis Lee Bieber wrote:
> On Sat, 2 Jun 2012 14:57:17 +0200, Matteo Landi <matteo at matteolandi.net>
> declaimed the following in gmane.comp.python.general:
> 
> 
> > Lesson learned:  never invoke Tkinter functions / methods outside the mainloop
> > thread.. NEVER!
> >
> 
> 	Typically, that advice would apply to ANY GUI library...
> 
> 	The exception being operations that /add/ an event to the pending
> unprocessed GUI events, thereby signaling the GUI to perform the desired
> function.

You right, definitely!

I made a bit of GTK programming before, and if I remember correctly, there is
a *thread-safe* function, `gobject.idle_add`, that let you queue functions to be
executed by the main thread.  For that reason, I thought it was safe to invoke
`tk.after_idle` outside the mainloop's thread, but oviously I was wrong!

> 
> 	If you want a head-ache... Try coding an application in which the
> old GKS is used for the main data display (I needed display-list
> capability with identified "segments" so I could "blank"/"show"
> different aspects of the data -- without rerunning some 15-minute
> process read months of data points) on top of a nearly raw X-Window
> systems (xt and DECWindows). AND the graphics commands for the data to
> be plotted were coming in as ASCII text over a VMS mailbox. Oh, and no
> threading -- the graphics commands had to be processed a few at a time
> via an xt idle event handler (if there were no GUI events, call my
> handler to read a command from the mailbox, dispatch to the GKS
> emulation of the command [the commands mapped to Ramtek 9300 graphics
> engine -- the original implementation], and return to check for next
> event). This was ca. 1990!
> 

Nice, good job!

> 
> 
> -- 
> 	Wulfraed                 Dennis Lee Bieber         AF6VN
>         wlfraed at ix.netcom.com    HTTP://wlfraed.home.netcom.com/
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list


Cheers,
Matteo

-- 
http://www.matteolandi.net



More information about the Python-list mailing list