来自另一个QDialog的QDialog未显示

时间:2017-08-04 11:34:01

标签: python pyqt qdialog

在我的主应用程序中,我打开一个QDialog,从这个QDialog我想打开/显示另一个。它不会显示第二个对话框,而是显示在我的主应用程序后面,它被阻止/禁用,我无法使用它。每个表单都在一个单独的文件中:

在mainform.py中:

form_gui = uic.loadUiType("mainform.ui")[0] # Load the UI
class MainForm(QtGui.QMainWindow, form_gui):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent) 
        self.btnOpenForm1.clicked.connect(self.showFirstDialog)
    ...
    def showFirstDialog(self):
        browser1 = UI_Form1(self)
        browser1.setWindowTitle('UI_Form1')
        browser1.show()
    ... 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myapp = MVSGUI()
    myapp.show()
    sys.exit(app.exec_())
文件UI_Form1.py中的

form_gui = uic.loadUiType("uiform1.ui")[0] # Load the UI
class UI_Form1(QtGui.QDialog, form_gui):
    def __init__(self, parent):
        super(UI_Form1, self).__init__(parent)
        self.btnOpenForm2.clicked.connect(self.showSecondDialog)
    ...
    def showSecondDialog(self):
        browser2 = UI_Form2(self)
        browser2.setWindowTitle('UI_Form2')
        browser2.show() 
    ...
文件UI_Form2.py中的

form_gui = uic.loadUiType("uiform2.ui")[0] # Load the UI
class UI_Form2(QtGui.QDialog, form_gui):
    def __init__(self, parent):
        super(UI_Form2, self).__init__(parent)
    ...

可能很容易猜到出了什么问题,但我找不到如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

可以在模态和无模式模式下创建QDialog。如果你想同时使用多个,请务必使它们无模式。

您可以查看QDialog的documentation,了解如何更改模态模式。 您还可以使用modality enum更改模态窗口的行为。

还要确保使用正确的工具来完成正确的任务,documentation状态:

  

对话窗口是一个主要用于短期任务的顶级窗口   并与用户进行简短的沟通。