PyQtを使用してユーザーからファイル名を取得しています。私はこの問題を示すための最小の例を開発しました。静的関数QFileDialog.getOpenFileNameを使用し、QFileDialog.DontUseNativeDialogを渡すと、ファイルダイアログが期待どおりに動作します。このオプションを指定しないと、ユーザーがファイルを選択したときにダイアログが閉じることはありません。このダイアログは、スクリプトの実行が完了した後で終了します。ユーザーがファイルを選択PyQtネイティブダイアログを使用しているときにQFileDialogが閉じない
はimport sys
import time
from PyQt4.QtGui import *
a = QApplication(sys.argv)
filename = QFileDialog.getOpenFileName(None, 'Open File', '.', '*', '*', QFileDialog.DontUseNativeDialog) #works
#filename = QFileDialog.getOpenFileName(None, 'Open File', '.', '*', '*') #doesn't work
a.quit()
a = None
print filename
print "Dialog should be gone"
time.sleep(10)
、「DontUseNativeDialog」が使用されていない場合、ダイアログは10秒スリープした後まで滞在します。ユーザーが[OK]または[キャンセル]をクリックするとすぐにダイアログが閉じることを期待しています。
Windows、LinuxまたはMacOSとは何を意味しますか? – furas
ほとんどのGUIは動作するには 'mainloop'('イベントループ ')が必要です。 'a.exec _()'( 'a = None'の前)を使ってPythonでmainloopを起動するとダイアログが閉じますが、このmainloopを止めるのに問題があります:) – furas