【问题标题】:How to open second window from 1st window in pyqt?如何在pyqt中从第一个窗口打开第二个窗口?
【发布时间】:2014-04-04 01:17:37
【问题描述】:

我有 2 个表单,form_1form_2(在另一个 classfile),我将使用按钮从 form_1 打开 form_2
如何在 PyQT 中创建它?

form_1 代码:

def retranslateUi(self, MainWindow):
    QtCore.QObject.connect(
        self.bt_form1, QtCore.SIGNAL(_fromUtf8("clicked()")), self.show_form2())
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
    self.bt_form1.setText(_translate("MainWindow", "FORM_1", None))

def show_form2(self):
    self.form2 = form2(self) # in here ??????

【问题讨论】:

    标签: python window pyqt


    【解决方案1】:

    我对 PyQT 还是很陌生,但我认为你可以这样做 -

    def show_form2(self):
        newDialog = uic.loadUi(r"uifile.ui")
        newDialog.show()
    

    或者,如果您已将其子类化,请确保您 import 它在另一个文件中并使用

    def show_form2(self):
        newDialog = subDialog.subDialog()
        newDialog.show()
    

    编辑 - 哦,确保你把它连接到按钮点击

    self.bt_form1.clicked.connect(self.show_form2)
    

    【讨论】:

    • 我不明白 subDiaolog in def show_form2(self): newDialog = subDialog.subDialog() newDialog.show() 是什么意思?我试过但显示描述“对象没有属性'显示”
    • 子对话框将是您的 form2
    • 我有问题 n 显示“对象没有属性 'show'”,为什么?
    • 你确定你是以其他形式从 QDialog 继承的吗?
    • 我认为没有,但我从 QtGui 创建的节目不在类 form2 中。像这样,,: if name == "main" : import sys app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
    【解决方案2】:
    class Main(QMainWindow):
    
        def __init__( ... )
    
        def retranslateUi(self, MainWindow):
            QtCore.QObject.connect(self.bt_form1,     QtCore.SIGNAL(_fromUtf8("clicked()")), self.show_form2())
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
            self.bt_form1.setText(_translate("MainWindow", "FORM_1", None))
    
        def show_form2(self):
            self.form2 = Form2(self)
            self.form2.show()
    

    您的 Form2 代码应如下所示:

    class Form2(QDialog):
    
        def __init__(self, parent=None) .... 
    
        # do whatever #
    

    【讨论】:

    • 我试过了,但是报错,出现'Ui_MainWindow'对象没有'show'属性,你了解这个问题吗?
    • 如果没有看到其他表单的代码,我们真的会情不自禁。 QDialog()QMainWindow() 类肯定有 .show() 方法。另外,在不传递parent 属性的情况下试一试。
    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2014-06-18
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多