我正在使用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秒之後睡眠。我希望只要用戶點擊「確定」或「取消」,對話框就會關閉。
你是什麼意思'原生' - Windows,Linux或MacOS? – furas
大多數GUI需要'mainloop'('event loop')才能工作。您可以使用'a.exec _()'(在'a = None'之前)在PyQt中啓動主循環,並關閉對話框,但是您將遇到阻止此主循環的問題:) – furas