一. QAbstractButton简介
QAbstractButton是PySide2中所有按钮的父类, 关系图如下:
基本按钮包含 普通按钮QPushButton, 复选按钮QCheckBox, 单选按钮QRadioButton, 工具按钮QToolButton.
QAbstractButton类中包含的按钮相关信号如下:
clicked: 当鼠标在按钮上点下且释放后触发
pressed: 当鼠标在按钮上点下即触发
released: 当鼠标在按钮上释放则触发
toggled: 可被选中的按钮状态变化则触发, 例如QCheckBox从被勾选变为未勾选,则触发此信号
本文先从QPushButton开始介绍,后续会继续介绍QCheckBox, QRadioButton, QToolButton.
二. QPushButton简介
普通按钮QPushButton就是我们桌面软件上常用的按钮, 应用比较简单,基本就是clicked, pressed, released三个信号.我们只需要根据自己软件设计需求,去设计相应的槽函数然后连接到对应的信号上即可.
三. QPushButton实例
界面设计及信号连接方法就不在这里重复介绍可参考:Python--PySide2入门(1)
为观察按钮各信号触发条件,本例设计两个按钮, 其中一个观察 clicked, 另一个观察pressed和released信号,如下:
设计了三个槽函数, 分别在界面显示 按钮点击, 按下, 释放, 代码如下:
# -*- coding: utf-8 -*-
import sys
from PySide2.QtWidgets import QMainWindow, QApplication
from PySide2.QtCore import Slot
from UI.pushbutton_ui import Ui_PushButton # 导入界面文件生成的对象
class PushButton(QMainWindow):
def __init__(self):
super(PushButton, self).__init__() # 初始化父类
self.ui = Ui_PushButton() # 实例化界面对象
self.ui.setupUi(self) # 加载界面至对象中
# 连接点击测试按钮clicked信号至点击测试槽函数
self.ui.btn_click.clicked.connect(self.slot_btn_clicked)
# 连接按下_释放测试按钮pressed信号至按下测试槽函数
self.ui.btn_press_release.pressed.connect(self.slot_btn_pressed)
# 连接按下_释放测试按钮releaseed信号至释放测试槽函数
self.ui.btn_press_release.released.connect(self.slot_btn_released)
@Slot(str)
def slot_btn_clicked(self):
# 设置显示标签文字
self.ui.lb_disp.setText("按钮点击触发")
@Slot(str)
def slot_btn_pressed(self):
# 设置显示标签文字
self.ui.lb_disp.setText("按钮按下触发")
@Slot(str)
def slot_btn_released(self):
# 设置显示标签文字
self.ui.lb_disp.setText("按钮释放触发")
if __name__ == "__main__":
app = QApplication(sys.argv)
win = PushButton()
win.show()
app.exec_()
四. 例程效果
动图中可看出:
clicked信号,在鼠标完整地进行了按下及释放后,才触发
pressed信号, 在鼠标按下后立即触发
released信号, 在鼠标按下释放后才触发
可能写得不够详细, 有任何不理解的,欢迎从评论区中讨论, 谢谢!