PyQt信号和槽

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"

猜你喜欢

转载自blog.csdn.net/kaida1234/article/details/79794224