PyQt5学习系列之QMetaObject.connectSlotsByName
- 学习记录
- 总结
学习记录
QMetaObject.connectSlotsByName——自动将信号连接到槽(函数)
例如:
from PyQt5.QtWidgets import QMainWindow, QPushButton
from PyQt5.QtCore import QObject, QMetaObject
class MyWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.button = QPushButton('Click me', self)
self.button.clicked.connect(self.on_clicked)
def on_clicked(self):
print('Button was clicked!')
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
创建了一个按钮,并将它的 clicked
信号直接连接到 on_clicked
槽。
使用后:
def on_clicked_btn(self):
print('Button was clicked!')
QtCore.QMetaObject.connectSlotsByName(self)
当你点击按钮时,on_clicked_btn
函数会被调用。
注意,这种方法只能自动连接 clicked
类型的信号。
总结
必须遵循on_<objectname><signalname>
的命名约定。对于不遵循这个约定的信号,仍然需要手动连接。