查看完整版本: [-- 请教!PYQT两个窗口间的控件如何相互访问 --]

QTCN开发网 -> Python Qt GUI快速编程 -> 请教!PYQT两个窗口间的控件如何相互访问 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lason123 2018-07-26 14:03

请教!PYQT两个窗口间的控件如何相互访问

[attachment=19253]
坛里的各位高手,请教PyQt两个窗口间控件相互访问的问题,如上图,
form1里有两个按钮,Btn1和Btn2,当点击form1中Btn2的时候,会跳出form2面板,form2中有个按钮Btn3
我的想法是:当form2中Btn3被点击的时候,form1中的Btn1按钮设置使能设为False
困难点:当弹出form2时,点击Btn3,如何把这个消息告知Form1类,换句话说,Btn3如何访问Form1类,子类如何访问父类

怎么写,谢谢大家了

form1的界面函数如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'UI1.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui
from testui2 import ui2   #导入界面2的类

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class ui1(QtGui.QWidget):
    def __init__(self, ):
        super(ui1, self).__init__()

    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(794, 591)
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(100, 180, 181, 111))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.setStyleSheet(_fromUtf8("background-color: rgb(85, 255, 0);"))
        self.pushButton_2 = QtGui.QPushButton(Form)
        self.pushButton_2.setGeometry(QtCore.QRect(360, 180, 181, 111))
        self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
        self.pushButton_2.setStyleSheet(_fromUtf8("background-color: rgb(85, 255, 0);"))

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
        QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), self.showUI2)

    def showUI2(self):
        self.showui2 = ui2()
        self.showui2.show()

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form1", None))
        self.pushButton.setText(_translate("Form", "Btn1", None))
        self.pushButton_2.setText(_translate("Form", "Btn2", None))

def main():
    import sys
    app = QtGui.QApplication(sys.argv)
    widget = QtGui.QWidget()
    ui = ui1()
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())
    pass
if __name__ == '__main__':
    main()

form2的界面类函数(QT 设计师生成的代码):
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'UI2.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)


class ui2(QtGui.QWidget):
    def __init__(self):
        super(ui2, self).__init__()
        self.setupUi(self)
        self.retranslateUi(self)
        # self.new = Main_GUI()
        # self.setupUi(self)
        self.flag=False

    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(794, 591)
        self.form = Form
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(100, 180, 181, 111))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.pushButton.setStyleSheet(_fromUtf8("background-color: rgb(85, 255, 0);"))

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form2", None))
        self.pushButton.setText(_translate("Form", "Btn3", None))

iceroad 2018-07-30 16:14
信号槽啊,在form2中,绑定Btn3跟form2,在 form1和form2父窗体中,绑定 form1和form2

在form1封装槽函数,设置按钮的状态

Btn3发信号-->form2发信号----->触发form1的槽函数


查看完整版本: [-- 请教!PYQT两个窗口间的控件如何相互访问 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled