Python PyQt-如何将特定对话框链接到类
我已经创建了一个PyQt主窗口应用程序,我还在PyQt设计器中创建了两个PyQt对话框,然后是一个“调用”.pyw程序,问题是当我尝试打开不同的对话框时,它只打开一个对话框 如何将对话框显式设置/链接到类: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
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链接