PyQt - 如何使用 class link 特定对话框
PyQt - How to link specific dialog with class
我创建了一个 PyQt MainWindow 应用程序,还在 PyQt 设计器中创建了 2 个 PyQt 对话框,然后是一个 "calling" .pyw 程序,问题是当我尝试打开不同的对话框时,它只打开一个对话框。
我如何显式 set/link 对话 class:
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_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)
我创建了一个 PyQt MainWindow 应用程序,还在 PyQt 设计器中创建了 2 个 PyQt 对话框,然后是一个 "calling" .pyw 程序,问题是当我尝试打开不同的对话框时,它只打开一个对话框。
我如何显式 set/link 对话 class:
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_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)