我在 Windows 7 下使用 Python 2.7.2 时遇到了一个非常奇怪的意外问题。
此代码不会退出:
import gtk
import win32ui
w = gtk.Window()
w.connect("destroy", gtk.main_quit)
w.show_all()
gtk.main()
print 'stop-point'
quit()
窗口关闭,我得到“停止点”,一切都应该没问题。
但控制台没有关闭。
甚至quit()
没有帮助。
问题在于import win32ui
如果我删除它,一切都会正常。
另外,在版本中只有
import gtk
import win32ui
一切正常。
win32ui有什么问题?
如何强制关闭我的应用程序?
即使没有 GTK,也会发生:
import win32gui, win32ui
try:
result = win32gui.GetOpenFileNameW()
except win32gui.error as result:
pass
print result
# script ends but python doesn't exit
该问题是由 pywin32 中的错误引起的:
我想出了一个可怕的 hack,作为解决方法,直到 pywin32 中的错误得到修复。将此代码放在退出例程的末尾。在执行此操作之前,请尽可能多地进行清理。解决方法使用 Windowstaskkill
终止当前任务的工具。
import os
# kill this process with taskkill
current_pid = os.getpid()
os.system("taskkill /pid %s /f" % current_pid)
将上述代码注册为函数atexit http://docs.python.org/2/library/atexit.html#module-atexit可能允许 Python 首先进行一些清理:
import atexit, os
def taskkill_this():
# kill this process
current_pid = os.getpid()
os.system("taskkill /pid %s /f" % current_pid)
atexit.register(taskkill_this)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)