【发布时间】:2017-08-04 11:34:01
【问题描述】:
在我的主应用程序中,我打开一个 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)
...
可能很容易猜出问题所在,但我找不到解决方法。
【问题讨论】:
-
用你的代码复现并不容易。你能给我们最小的脚本来做
python script.py看看你的问题吗? -
确保两个对话框都不是模态的
-
@Tiger-222 我编辑了显示按钮声明的代码。因此,mainform.py 创建了主 GUI。它包含一个打开第一个对话框的按钮。第一个对话框位于文件 UI_Form1.py 中,它包含一个打开第二个对话框的按钮。因此,第二个对话框应该出现在第一个对话框的前面,但它在主窗口后面打开是禁用的。希望这会有所帮助
-
@Mailerdaimon ,一个菜鸟问题,如何检查它们不是模态的?