Bootstrap

PyQT5 (八十三) PyQt5 信号与槽的自动连接

 

PyQt5 信号与槽的自动连接

槽函数需要用 @QtCore.pyqtSlot() 指定并告诉pyqt5 这是个槽函数

用 QtCore.QMetaObject.connectSlotsByName(self)  # 开启自动连接信号和槽
        
按照对象名的规则自动寻找对相应的槽函数
 on_objectname_signalname
 
 on_okBtn_clicked

import sys
import time

from PyQt5 import QtCore
from PyQt5.QtCore import QObject, QThread, QDateTime, pyqtSignal
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QDialog, QLineEdit, QHBoxLayout

'''
PyQt5 信号与槽的自动连接

槽函数需要用 @QtCore.pyqtSlot() 指定并告诉pyqt5 这是个槽函数

用 QtCore.QMetaObject.connectSlotsByName(self)  # 开启自动连接信号和槽
        
按照对象名的规则自动寻找对相应的槽函数
 on_objectname_signalname
 
 on_okBtn_clicked
'''


class AutoSignalSlot(QWidget):
    def __init__(self):
        super().__init__()
        self.okBtn = QPushButton("ok",self)
        self.okBtn.setObjectName("okBtn") #设置对象名

        self.cancelBtn = QPushButton("Cancel",self)
        self.cancelBtn.setObjectName("cancelBtn") #设置对象名

        layout = QHBoxLayout()
        layout.addWidget(self.okBtn)
        self.setLayout(layout)
        # self.okBtn.clicked.connect(self.on_okBtn_clicked) # 以前的方法手动绑定信号和槽
        QtCore.QMetaObject.connectSlotsByName(self)  # 开启自动连接信号和槽

    @QtCore.pyqtSlot()
    def on_okBtn_clicked(self):
        print("点击了OK按钮")

    @QtCore.pyqtSlot()
    def on_cancelBtn_clicked(self):
        print("点击了Cancel按钮")



if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = AutoSignalSlot()
    win.show()
    sys.exit(app.exec_())

;