PyQt信号和槽

78 篇文章 0 订阅

MyParent.ui里有一个QPushbutton

将ui文件转为py文件->MyParent.py

MySon.py:

class MySon(QDialog, MyParent.Ui_Dialog):
    helpSignal = pyqtSignal(str)
    def __init__(self):
        super().__init__(None)
        self.setupUi(self)
        self.num = 0
        self.helpSignal.connect(self.showHelpMessage)

        self.btnYes = QtWidgets.QPushButton(self)
        self.btnYes.clicked.connect(self.on_btnYes_clicked)
        self.btnYes.setGeometry(QtCore.QRect(0, 0, 60, 20))
        self.btnYes.setText('按钮')

        self.pushButton.clicked.connect(self.on_MyPushButton_clicked)


    def keyPressEvent(self, event):
        if event.key() == Qt.Key_F1:
            self.helpSignal.emit("help message")

    def showHelpMessage(self, message):
        self.num += 1
        print(self.num)
        print(message)

    def on_btnYes_clicked(self):
        self.num += 1
        print(self.num)

    def on_MyPushButton_clicked(self):
        print('on_pushButton_clicked')

信号和槽之间参数传递的几种情况:

from PyQt5.QtWidgets import QPushButton, QComboBox
from functools import partial
class MySon(QDialog, MyParent.Ui_Dialog):
    def __init__(self):
        super().__init__(None)
        self.setupUi(self)
        self.__first = QPushButton(self)
        self.__second = QPushButton(self)
        self.__cbx_first = QComboBox(self)
        self.__cbx_second = QComboBox(self)
        self.__cbx_first.addItem('a')
        self.__cbx_first.addItem('b')
        self.__cbx_first.addItem('c')
        self.__cbx_second.addItem('d')
        self.__cbx_second.addItem('e')
        self.__cbx_second.addItem('f')
        self.__first.setGeometry(200, 200, 80, 20)
        self.__second.setGeometry(280, 200, 80, 20)
        self.__cbx_first.setGeometry(360, 200, 80, 20)
        self.__cbx_second.setGeometry(440, 200, 80, 20)
        self.__first.clicked.connect(partial(self.function, 4))
        self.__second.clicked.connect(lambda: self.function(2))
        self.__cbx_first.currentIndexChanged.connect(lambda: self.function(3))
        self.__cbx_second.currentIndexChanged[int].connect(self.cbxfun)
        self.__cbx_second.currentIndexChanged[str].connect(self.cbxfun2)

    def function(self, num):
        print(num)

    def cbxfun(self, index):
        print(index)

    def cbxfun2(self, s):
        print(s)

第一个PushButton按下后会打出数字4

第二个PushButton按下后会打出数字2

第一个ComboBox选择不同选项时会打出3

第二个ComboBox选择不同选项时分别会打出

"0

d",

"1

e",

"2

f"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值