2014-04-24 25 views
1

我在python上做了一些小腳本來做一些事情,我想先問用戶輸入。這是我當前的代碼:使用QT(PySide)通過QInputDialog獲取用戶輸入

import sys 
from PySide import QtGui 

app = QtGui.QApplication(sys.argv) 
gui = QtGui.QWidget() 
text, ok = QtGui.QInputDialog.getText(gui, "question", 
      """please put the thing I need from you""") 
print(text, ok) 
if ok: 
    app.exit() 
else: 
    app.exit() 
app.exec_() 
print ("I'm aliveeeee'") 

對話框彈出窗口正是我想要的,但app.exec_()永遠不會結束,因此永遠不會執行的代碼的其餘部分(和過程永遠不會完成),我試着用app.exit(),app.quit()殺死它,我也嘗試顯示()和關閉()QWidget,但沒有任何工作。

如果我在調用QInputDialog之前做了gui.show(),然後手動關閉小部件,應用程序成功關閉。但是,這不是我想要的行爲。

你能指導我獲取我的數據後關閉exec循環的最佳方法嗎?

PD:這將是一個Windows應用程序(與py2exe)和使用shell不是一個選項。

回答

3

只是不叫app.exec_()

這裏的問題是,這是一個玩具的例子。在現實生活中,通常你會顯示一些UI,然後調用app.exec()讓用戶與之交互。

+0

哇,我以爲你總是要調用exec_()。謝謝! – lithiium