如何在Qt Designer(Python)中创建一个弹出窗口(用对话框链接MainWindow)?

时间:2016-05-11 13:34:10

标签: python c++ qt user-interface qt-designer

我正试图建立一个"关于"我的应用程序的对话窗口。我的主窗口是" MainWindow"类型和"关于" window是一个Dialog,都是用QT Designer创建的,并转换为" .py" pyuic4的文件 - > gui_v1.py和about_v1.py

在我的应用程序的主文件中,我为about对话框构建了第二个类:

import gui_v1
import about_v1

class AboutDialog(QtGui.QDialog, about_v1.Ui_Dialog):
    def __init__(self, parent=None):
        super(AboutDialog, self).__init__(parent)
        self.setupUi(self)

我将open_about()函数添加到主文件中的主类,并将此函数链接到负责打开about窗口的菜单按钮:

class MainDialog(QtGui.QMainWindow, gui_v1.Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainDialog, self).__init__(parent)
        self.setupUi(self)
        QtCore.pyqtRemoveInputHook()

        [...]

        def open_about(self):
           app = QtGui.QApplication(sys.argv)
           form = AboutDialog()
           form.show()
           app.exec_()

我的主应用程序正在运行最后一个功能:

if __name__ == '__main__':
    def main():
        app=QtGui.QApplication(sys.argv)
        form=MainDialog()
        form.show()
        app.exec_()

    main()

单击“关于”菜单项时,没有任何反应。我猜测问题出在open_about()函数中,但我似乎无法找到它是什么。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

QMessageBox有一些内置的框功能。看看

QMessageBox.about (QWidget parent, QString caption, QString text)

所以你会称之为:

QMessageBox.about (self, "About whatever....", "The text you want to display in the box")

您可以在此处查看QMessageBox文档:

http://pyqt.sourceforge.net/Docs/PyQt4/qmessagebox.html