美烦资源网

专注技术文章分享,涵盖编程教程、IT 资源与前沿资讯

Python——PySide2入门(2) 之 QPushButton

一. 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信号, 在鼠标按下释放后才触发

可能写得不够详细, 有任何不理解的,欢迎从评论区中讨论, 谢谢!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言