PyQt如何将特定对话框与类链接

2024-03-29 02:17:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个PyQt主窗口应用程序,并且在PyQt designer中创建了2个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_())

默认情况下,如果我注释掉这一行:

^{pr2}$

然后它加载Dialog1,我想显式地设置它加载哪个对话框

Github link


Tags: fromimportselfuiinitdefsyspyqt
1条回答
网友
1楼 · 发布于 2024-03-29 02:17:49

您的导入:

from Dialog1 import *
from Dialog2 import *

相当于:

^{pr2}$

所以最后Ui_Dialog将引用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)

相关问题 更多 >