Skip to content

Commit 753445a

Browse files
committed
Issue #989712: update the code to process tkinter messages in IDLE
without mainloop. Thanks to Roger Serwy for patch.
1 parent 0df5429 commit 753445a

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

Lib/idlelib/run.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import _thread as thread
77
import threading
88
import queue
9+
import tkinter
910

1011
from idlelib import CallTips
1112
from idlelib import AutoComplete
@@ -39,18 +40,14 @@ def idle_formatwarning_subproc(message, category, filename, lineno,
3940
warnings.formatwarning = idle_formatwarning_subproc
4041

4142

42-
def handle_tk_events():
43+
tcl = tkinter.Tcl()
44+
45+
46+
def handle_tk_events(tcl=tcl):
4347
"""Process any tk events that are ready to be dispatched if tkinter
4448
has been imported, a tcl interpreter has been created and tk has been
4549
loaded."""
46-
tkinter = sys.modules.get('tkinter')
47-
if tkinter and tkinter._default_root:
48-
# tkinter has been imported, an Tcl interpreter was created and
49-
# tk has been loaded.
50-
root = tkinter._default_root
51-
while root.tk.dooneevent(tkinter._tkinter.DONT_WAIT):
52-
# Process pending events.
53-
pass
50+
tcl.eval("update")
5451

5552

5653
# Thread shared globals: Establish a queue between a subthread (which handles

0 commit comments

Comments
 (0)