2014-04-24 24 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