网站首页 > 基础教程 正文
一. 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信号, 在鼠标按下释放后才触发
可能写得不够详细, 有任何不理解的,欢迎从评论区中讨论, 谢谢!
猜你喜欢
- 2025-05-11 在ubuntu环境下部署svn可视化管理工具iF.SVNAdmin详细教程
- 2025-05-11 这篇if __name__ == '__main__'讲解的实在太通透了,它还能影响这些
- 2025-05-11 了解 Python 中 if __name__ == "__main__" 的作用
- 2025-05-11 python if多条件并列判断的三种方法
- 2025-05-11 「Python条件结构」嵌套if:判断三角形及三角形的类型
- 2025-05-11 SQL用了两年多,分享2个最常用的小技巧
- 2025-05-11 揭秘Python中的魔法语句:if __name__ == '__main__':
- 2025-05-11 测开不得不会的python条件判断语句if
- 2025-05-11 彻底搞懂Python中的if __name__ == '__main__':让你的代码更专业!
- 2025-05-11 python自学者的分享:if-else、for、while语句
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)