PyQt4 中的简单输入对话框

Posted

技术标签:

【中文标题】PyQt4 中的简单输入对话框【英文标题】:Simple Input Dialog in PyQt4 【发布时间】:2015-01-13 09:36:36 【问题描述】:

我正在编写一个程序来检查用户是否为 root。如果没有,则会显示输入对话框以输入密码。我之前也这样做过(在某个班级内),但在某处丢失了文件。

if os.name == 'posix':
  if not os.getuid() == 0:
    input, ok = QtGui.QInputDialog.getText(None, 'Password',
                                                   'Enter password:', QtGui.QLineEdit.Password)
  if ok:
    #remaining code

这里的问题是这会产生错误QWidget: Must construct a QApplication before a QPaintDevice

是否只能使用 UI 类调出输入对话框?或者还有其他解决方案吗?

【问题讨论】:

Must construct a QApplication before a QWidget 的可能重复项 【参考方案1】:

您没有使用整个代码,但您似乎没有遵循 PyQt 的基本准则。 以下是创建正确 pyqt 应用所需的最低要求:

import sys
from PyQt5 import QtWidget

def main():
    app = QtWidget.QApplication(sys.argv)
    w = QtWidget.SOMEWIDGET()
    w.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

【讨论】:

抱歉回复晚了。我想要的是只获得用于输入密码的输入对话框。通过上面的示例,我如何获得输入对话框。网络上可用的最多示例处理class Example(QtGui.QWidget):。但就我而言,我只需要输入对话框。

以上是关于PyQt4 中的简单输入对话框的主要内容,如果未能解决你的问题,请参考以下文章

PyQt4预定义对话框

Pyqt4学习笔记-对话框(更新ing)

如何在 PyQt4 中使用 QtGui 来收集 Python 程序的输入变量?

PyQt4 信号和 QObject.Emit()

PyQt4 文件名对话框

PyQt4:创建返回参数的自定义对话框