2

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
4

1 に答える 1

2

この問題は、pywin32 のバグが原因です: https://sourceforge.net/tracker/?func=detail&aid=3562998&group_id=78018&atid=551954

pywin32 のバグが修正されるまで、回避策として機能する恐ろしいハックを思いつきました。このコードを出口ルーチンの最後に置いてください。これを実行する前に、できる限りクリーンアップしてください。この回避策では、Windowstaskkillツールを使用して現在のタスクを終了します。

import os

# kill this process with taskkill
current_pid = os.getpid()
os.system("taskkill /pid %s /f" % current_pid)

上記のコードを関数として登録すると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)
于 2013-11-21T17:56:41.410 に答える