[Python-bugs-list] [ python-Bugs-453489 ] Using deiconify() hangs on exit
noreply@sourceforge.net
noreply@sourceforge.net
Thu, 07 Nov 2002 07:00:54 -0800
Bugs item #453489, was opened at 2001-08-20 16:38
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=453489&group_id=5470
Category: Tkinter
Group: Platform-specific
Status: Open
Resolution: None
Priority: 4
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Nobody/Anonymous (nobody)
Summary: Using deiconify() hangs on exit
Initial Comment:
If you run the following script, and iconize the
window before the after() timer, it'll restore and
raise the window as it should, but then you can't
exit. You have to kill winoldap with ctrl+alt+del and
wait.
I ran into this trying to write a portable jabber
client using tkinter.
This is with 2.1.1 on Windows 98. Does it every
time. May be related to bug #216289.
from Tkinter import *
import sys
def foo():
print 'foo'
sys.stdout.flush()
root.deiconify()
print 'bar'
sys.stdout.flush()
root=Tk()
Button(root, text='Quit', command=root.quit).pack()
root.after(5000, foo)
root.mainloop()
----------------------------------------------------------------------
>Comment By: Guido van Rossum (gvanrossum)
Date: 2002-11-07 10:00
Message:
Logged In: YES
user_id=6380
idiscovery, when you say "PythonWin" do you actually mean
Pythonwin (a Win32-specific Python IDE, part of Mark
Hammond's win32all)? Or do you simple mean "Python under
Windows", as installed by the Python installer you get from
python.org? This difference is significant; I would not
expect Tkinter apps to work well using Pythonwin, because it
has its own Win32 event loop.
I don't understand why you'd need a root.destroy() after
root.mainloop() exits -- when Python exits, it destroys the
Tk windows anyway in my experience.
----------------------------------------------------------------------
Comment By: Internet Discovery (idiscovery)
Date: 2002-11-03 06:06
Message:
Logged In: YES
user_id=33229
See my comments in bug 231207:
IMHO all Tkinter programs need a root.destroy()
after root.mainloop()
Your test case DOES NOT die whether or not you deiconify it,
if you run it under PythonWin.
Your test case DOES die whether or not you deiconify it,
whether or not you run it under PythonWin, if you add a
root.destroy()
after the
root.mainloop()
If you run it as a console script without the root.destroy()
then Python reaches the end of the script and exits, without
having shut Tk down first. PythonWin of course is not exiting
at the end, and in the status line says the script
returns with code 0.
I think this is a usage/documentation error and is
IMHO unrelated to the very real bug 216289.
----------------------------------------------------------------------
Comment By: Howard Lightstone (hlightstone)
Date: 2001-09-05 14:31
Message:
Logged In: YES
user_id=66570
Since I was also looking at #216289:
Data using pythonw.exe (Taskinfo2000):
Handles while running (before quit)
4 : Process 4 PID:FFF6F92D, C:\PYTHON20\PYTHONW.EXE
C : Event 1
10 : Event 1
1C : Mutex 17 OLESCMLOCKMUTEX
20 : Event 1
24 : Event 1
--------------------------------------------------------
Handles while running Python.exe (before quit)
|Handle||Type| |Refs||Name|
4 : Process 7 PID:FFF50719, C:\PYTHON20\PYTHON.EXE
8 : Console 3
C : Screen Buff 3
10 : Screen Buff 3
18 : Event 1
1C : Event 1
20 : Event 1
24 : Event 2
28 : Mutex 19 OLESCMLOCKMUTEX
2C : Event 1
30 : Event 1
34 : Thread 1 ThID:FFF79069, PID:FFF50719,
C:\PYTHON20\PYTHON.EXE
38 : Event 1
3C : Event 2
40 : Thread 1 ThID:FFF52B8D, PID:FFF50719,
C:\PYTHON20\PYTHON.EXE
44 : Event 1
48 : Event 2
4C : Thread 1 ThID:FFF53539, PID:FFF50719,
C:\PYTHON20\PYTHON.EXE
----------------------------------------------------------
Handles AFTER trying to quit
|Handle||Type| |Refs||Name|
4 : Process 4 PID:FFF50719, C:\PYTHON20\PYTHON.EXE
8 : Console 3
C : Screen Buff 3
10 : Screen Buff 3
18 : Event 1
1C : Event 1
20 : Event 1
24 : Event 1
28 : Mutex 19 OLESCMLOCKMUTEX
2C : Event 1
30 : Event 1
34 : Thread 1
38 : Event 1
3C : Event 1
40 : Thread 2 ThID:FFF52B8D, PID:FFF50719,
C:\PYTHON20\PYTHON.EXE
It appears that there is a thread NOT terminating. I just
don't know how to go about finding it.
----------------------------------------------------------------------
Comment By: Guido van Rossum (gvanrossum)
Date: 2001-08-20 22:39
Message:
Logged In: YES
user_id=6380
I agree that this is likely the same as #216289.
AFAIK it's a Tcl bug and we don't know what to do about it.
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2001-08-20 18:51
Message:
Logged In: NO
Interestingly enough, if you add a print statement after
the mainloop(), it gets printed, showing the event loop
exits properly.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=453489&group_id=5470