Python PyQt-如何将特定对话框链接到类

Python PyQt-如何将特定对话框链接到类,python,python-3.x,pyqt,pyqt4,Python,Python 3.x,Pyqt,Pyqt4,我已经创建了一个PyQt主窗口应用程序,我还在PyQt设计器中创建了两个PyQt对话框,然后是一个“调用”.pyw程序,问题是当我尝试打开不同的对话框时,它只打开一个对话框 如何将对话框显式设置/链接到类: import sys from MainApp import * from Dialog1 import * from Dialog2 import * from PyQt4 import Qt, QtGui class MyForm(QtGui.QMainWindow): d

我已经创建了一个PyQt主窗口应用程序,我还在PyQt设计器中创建了两个PyQt对话框,然后是一个“调用”.pyw程序,问题是当我尝试打开不同的对话框时,它只打开一个对话框

如何将对话框显式设置/链接到类:

import sys
from MainApp import *
from Dialog1 import *
from Dialog2 import *
from PyQt4 import Qt, QtGui


class MyForm(QtGui.QMainWindow):

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButton1, QtCore.SIGNAL('clicked()'), self.openDialog1)
        QtCore.QObject.connect(self.ui.pushButton2, QtCore.SIGNAL('clicked()'), self.openDialog2)    


    def openDialog1(self):
        editDialog = Dialog1()
        editDialog.exec_()

    def openDialog2(self):
        editDialog = Dialog2()
        editDialog.exec_()        



class Dialog1(QtGui.QDialog):
    isEdit = False
    def __init__(self, studentId=0, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

class Dialog2(QtGui.QDialog):
    isEdit = False
    def __init__(self, studentId=0, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())
默认情况下,如果我注释掉这一行,它将加载Dialog2:

from Dialog2 import **
然后它加载Dialog1,我想显式地设置它加载的对话框

您的导入:

from Dialog1 import *
from Dialog2 import *
这相当于:

from Dialog1 import Ui_Dialog
from Dialog2 import Ui_Dialog
所以最后,
Ui\u对话框
将参考
Dialog2.py的设计,这就是为什么只显示第二种形式的原因

解决方案是区分两种导入,为此您可以使用:
as

import sys
from MainApp import *
from Dialog1 import Ui_Dialog as Ui_Dialog1 # change this line
from Dialog2 import Ui_Dialog as Ui_Dialog2 # change this line
from PyQt4 import Qt, QtGui


class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        [...]


    def openDialog1(self):
        editDialog = Dialog1()
        editDialog.exec_()

    def openDialog2(self):
        editDialog = Dialog2()
        editDialog.exec_()


class Dialog1(QtGui.QDialog):
    isEdit = False
    def __init__(self, studentId=0, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Dialog1() # change this line
        self.ui.setupUi(self)

class Dialog2(QtGui.QDialog):
    isEdit = False
    def __init__(self, studentId=0, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Dialog2() # change this line
        self.ui.setupUi(self)

你说他们打开同样的对话是什么意思?EditStudentDialog和EditAttendanceDialog中的Ui_Dialog()是否相同?类型为“为什么我的代码不工作?”的问题必须提供一个解决方案,但成为离题,并且您的代码远不能验证和完成。您可以提供一个可以执行的项目,您当前的代码可以通过多种方式解释,若能通过github或类似工具共享这个最小的项目,并对其进行测试,而不是浪费时间修补代码,那个就太好了。我已经更新了这个问题,使其更具可读性和理解性,还添加了一个github链接