QPushButton 是 Qt 框架中表示可点击按钮部件的类。在 PySide6 中,你可以使用 QPushButton 类来创建与图形用户界面(GUI)交互的按钮,当用户点击按钮时,执行特定的功能。
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:按钮显示的文本;icon:PySide6.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) |
测试窗口属性 |