使用QT (PySide)通过QInputDialog获取用户输入

2 投票
1 回答
3195 浏览
提问于 2025-04-18 04:06

我写了一个小脚本,用Python做一些事情,我想先让用户输入一些信息。这是我现在的代码:

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() 显示窗口,然后手动关闭这个窗口,应用程序就能成功关闭。不过,这不是我想要的效果。

你能指导我一下,怎么在获取到数据后正确关闭这个执行循环吗?

附注:这个应用程序会是一个Windows应用(使用py2exe),所以不能用命令行。

1 个回答

4

别调用 app.exec_() 这个方法。

这里的问题是,这只是一个简单的示例。在实际应用中,通常你会先显示一些界面,然后再调用 app.exec() 让用户可以和这个界面进行互动。

撰写回答