PyQt5中信号连接槽的方法
信号连接槽的方法有4种:
- 在创建 Widget 的时候使用信号作为关键字参数,其值为连接的槽函数名
- 使用信号的 connect() 方法连接到槽
- 使用 QWidget 的 pyqtConfigure() 方法配置
- 通过函数名称连接槽
【PyQt5中信号连接槽的方法】signals_slots_demo.pyw
from PyQt5.QtWidgets import (QApplication, QWidget, QFontComboBox, QLabel,
QHBoxLayout, QPushButton, QMessageBox, QVBoxLayout)
from PyQt5.QtCore import QMetaObjectclass MainWindow(QWidget):
def __init__(self):
super().__init__(None)self.initUI()def initUI(self):
main_layout = QHBoxLayout()# 第一种信号与槽连接的方法
cb_font = QFontComboBox(currentFontChanged=self.changeLabelFont)
cb_font.pyqtConfigure(objectName='fontCombo', editable=False)
# 第二种信号与槽连接的方法
cb_font.currentFontChanged.connect(self.changeButtonFont)
main_layout.addWidget(cb_font)label = QLabel()
label.pyqtConfigure(text='示例文本!', objectName='label')main_layout.addWidget(label)closeButton = QPushButton('关闭')
# 第三种连接信号与槽的方法
closeButton.pyqtConfigure(objectName='button', clicked=self.close)
main_layout.addWidget(closeButton)vhbox = QVBoxLayout()
vhbox.addLayout(main_layout)
vhbox.addStretch(1)
self.setLayout(vhbox)# 第四种连接信号与槽的方法
QMetaObject.connectSlotsByName(self)def changeLabelFont(self, c_font):
label = self.findChild(QLabel, 'label')
label.setFont(c_font)def changeButtonFont(self, c_font):
button = self.findChild(QPushButton, 'button')
button.setFont(c_font)def on_fontCombo_currentFontChanged(self, c_font):
"""
通过 Widget 的 objectName 来连接槽,槽的名称如下所示:
on_
文章图片
signals_slots_demo.gif
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理