[Idle-dev] Interruptable code?

Tal Einat taleinat at gmail.com
Sat Dec 16 16:15:16 CET 2006


On 12/16/06, Douglas S. Blank <dblank at brynmawr.edu> wrote:

>
> On Sat, December 16, 2006 3:21 am, Kurt B. Kaiser said:
>
> >> - I can't use idle with sub processes (because I want to interact with
> >> Tkinter in a single thread)
> >
> > If you run with the subprocess and construct Tkinter objects, they run
> in
> > a process separate from the IDLE GUI.  This is an advantage in most
> cases!
>
> Yes, I realize that. But there is one important case where it is not:
> interactively creating and using Tkinter and/or the Python prompt. For
> example, being able to create a window and interactively type in commands
> to alter the window. Maybe I am using Tkinter incorrectly from Idle? When
> I type:
>
> >>> import Tkinter
> >>> tk = Tkinter.Tk()
>
> in idle -n (or raw Python), I get to interactively manuipulate Tk windows.
> When run in idle with subprocesses, it doesn't show any windows until a
> mainloop() (or similar method) is called.


 This always works for me:

import thread
import Tkinter
root = Tkinter.Tk()
...
thread.start_new_thread(root.mainloop, ())

This way you can even kill the mainloop without killing IDLE.

Hooking onto IDLE's GUI mainloop isn't a very good option IMO. It's very
useful when you're debugging IDLE itself, but otherwise it's a source
of inconsistent behavior and weird bugs.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/idle-dev/attachments/20061216/e0c0a627/attachment.html 


More information about the IDLE-dev mailing list