QPushButton 是 Qt 框架中表示可点击按钮部件的类。在 PySide6 中,你可以使用 QPushButton 类来创建与图形用户界面(GUI)交互的按钮,当用户点击按钮时,执行特定的功能。

pyside6 按钮
示例运行效果

QPushButton 示例

下面这个示例将使用QPushButton创建一个按钮,点击按钮时打印一行信息:

import sys
from PySide6.QtCore import Slot
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("QPushButton 示例")

        # 创建一个 QPushButton对象
        self.button = QPushButton("点我", self)
        # 将按钮移动到30,30处
        self.button.move(30, 30)
        # 将按钮的点击信号连接到槽函数
        self.button.clicked.connect(self.showInfo)

    @Slot()# 使用装饰器
    def showInfo(self):
        print("按钮被点击了")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

QPushButton 类初始化方法

QPushButton提供多种构造方法,构造参数详情如下:

QPushButton(parent=None)
QPushButton(text, parent=None)
QPushButton(icon, text, parent=None)
  • parent:按钮的父部件;不指定时自动关联到默认的顶级窗口;
  • text:按钮显示的文本;
  • iconPySide6.QtGui.QIcon对象,显示在按钮上的图标;

三种构造方法的示例如下:

from PySide6.QtWidgets import QPushButton
from PySide6.QtGui import QIcon

# 没有文字的按钮
button = QPushButton()
# 有文字的按钮
button = QPushButton("按钮文本")
# 有图标和文字的按钮
button = QPushButton(QIcon("icon.png"), "按钮文本")

QPushButton 常用信号

clicked 信号

最常用的信号,当按钮被点击时触发(按下并释放):

button.clicked.connect(lambda: print("按钮被点击了"))

pressed 信号

当按钮被按下的瞬间触发(尚未释放):

button.pressed.connect(lambda: print("按钮按下了"))

released 信号

当按钮被释放的瞬间触发,无论鼠标指针是否还在按钮上:

button.released.connect(lambda: print("按钮释放了"))

QPushButton 常用的属性和方法

属性/方法(示例) 说明
.text() 获取按钮文本
.setText("文本") 设置按钮文本
.icon() 获取按钮图标
.setIcon(icon) 设置按钮图标
.iconSize() 获取图标大小
.setIconSize(QSize(w,h)) 设置图标大小
.isEnabled() 获取启用状态
.setEnabled(bool) 设置启用状态
.isVisible() 获取可见性
.setVisible(bool) 设置可见性
.isHidden() 是否隐藏
.hide() 隐藏按钮
.show() 显示按钮
.isCheckable() 获取是否可切换
.setCheckable(bool) 设置可切换模式
.isChecked() 获取选中状态
.setChecked(bool) 设置选中状态
.toggle() 切换选中状态
.isFlat() 获取是否扁平样式
.setFlat(bool) 设置扁平样式
.isDefault() 获取是否为默认按钮
.setDefault(bool) 设置默认按钮
.isAutoDefault() 获取是否自动默认
.setAutoDefault(bool) 设置自动默认
.autoRepeat() 获取自动重复状态
.setAutoRepeat(bool) 设置自动重复
.autoRepeatDelay() 获取初始延迟(毫秒)
.setAutoRepeatDelay(int) 设置初始延迟
.autoRepeatInterval() 获取重复间隔(毫秒)
.setAutoRepeatInterval(int) 设置重复间隔
.click() 模拟点击
.animateClick() 带动画模拟点击
.animateClick(ms) 带动画模拟点击(指定毫秒)
.press() 模拟按下
.release() 模拟释放
.setStyleSheet(css) 设置样式表
.styleSheet() 获取样式表
.setToolTip(text) 设置工具提示
.toolTip() 获取工具提示
.setToolTipDuration(ms) 设置提示显示时长
.setStatusTip(text) 设置状态栏提示
.statusTip() 获取状态栏提示
.setWhatsThis(text) 设置"这是什么"帮助
.whatsThis() 获取"这是什么"帮助
.setAccessibleName(name) 设置无障碍名称
.accessibleName() 获取无障碍名称
.setAccessibleDescription(desc) 设置无障碍描述
.accessibleDescription() 获取无障碍描述
.setCursor(cursor) 设置鼠标光标
.cursor() 获取鼠标光标
.unsetCursor() 重置鼠标光标
.setFont(font) 设置字体
.font() 获取字体
.setGeometry(x,y,w,h) 设置位置和大小
.geometry() 获取几何位置
.setFixedSize(w,h) 设置固定大小
.setFixedWidth(w) 设置固定宽度
.setFixedHeight(h) 设置固定高度
.resize(w,h) 设置大小
.size() 获取大小
.width() 获取宽度
.height() 获取高度
.move(x,y) 移动位置
.pos() 获取位置
.x() 获取X坐标
.y() 获取Y坐标
.setMenu(menu) 设置关联菜单
.menu() 获取关联菜单
.setContextMenuPolicy(policy) 设置右键菜单策略
.setShortcut(key) 设置快捷键
.shortcut() 获取快捷键
.setAutoExclusive(bool) 设置自动互斥
.autoExclusive() 获取自动互斥
.setFocus() 设置焦点
.setFocusPolicy(policy) 设置焦点策略
.hasFocus() 是否有焦点
.clearFocus() 清除焦点
.setObjectName(name) 设置对象名(用于样式表)
.objectName() 获取对象名
.parent() 获取父控件
.setParent(parent) 设置父控件
.window() 获取所在窗口
.setProperty(name, value) 设置动态属性
.property(name) 获取动态属性
.clicked.connect(func) 连接点击信号
.pressed.connect(func) 连接按下信号
.released.connect(func) 连接释放信号
.toggled.connect(func) 连接切换信号
.blockSignals(bool) 阻塞/恢复信号
.signalsBlocked() 检查信号是否阻塞
.disconnect() 断开所有信号连接
.deleteLater() 延迟删除对象
.setAttribute(attr, on) 设置窗口属性
.testAttribute(attr) 测试窗口属性