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_())