PyQt5最全85 信号与槽之connectSlotsByName信号槽自动连接
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
import sys
class AutoSignalSlot(QWidget):
"""
信号与槽自动连接
QMetaObject.connectSlotsByName
避免使用connect
规定格式:on_objectname_signalname
eg: on_okButton_clicked
"""
def __init__(self):
super(AutoSignalSlot, self).__init__()
self.resize(400, 300)
self.okButton = QPushButton('ok', self)
self.okButton.setObjectName('okButton') #
self.okButton1 = QPushButton('cancel', self)
self.okButton1.setObjectName('cancelButton') # 名字和下面的槽方法要对应
layout = QHBoxLayout()
layout.addWidget(self.okButton)
self.setLayout(layout)
QtCore.QMetaObject.connectSlotsByName(self)
# 以前的方式
# self.okButton.clicked.connect(self.on_okButton_clicked)
@QtCore.pyqtSlot()
def on_okButton_clicked(self):
print('点击了ok按钮')
@QtCore.pyqtSlot()
def on_cancelButton_clicked(self):
print('点击了cancel按钮')
if __name__ == '__main__':
app = QApplication(sys.argv)
example = AutoSignalSlot()
print(example.__doc__)
example.show()
sys.exit(app.exec_())
结果
信号与槽自动连接
QMetaObject.connectSlotsByName
避免使用connect
规定格式:on_objectname_signalname
eg: on_okButton_clicked
点击了cancel按钮
点击了ok按钮
参考格式即可