Python GUI 编程 | QAbstractButton 抽象按钮类详解 — 快捷键设置

🌟想系统化学习 GUI 编程?看看这个:[Python GUI 编程] PySide & PyQt - 学习手册-CSDN博客

0x01:QAbstractButton 快捷键设置 — 相关方法

0x0101:& 符号自动创建快捷键

在创建按钮时,如果提示文本中包含 & 符号,QAbstractButton 会自动为其创建快捷方式。触发方式就是 Alt + <按钮> 即可,看下面这个示例:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(300, 200)
btn.setText("a&bc") # 触发快捷方式: Alt + b
# btn.setText("&abc") # 触发快捷方式: Alt + A
btn.clicked.connect(lambda: print("按钮被点击了"))
# 3. 展示控件
btn.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x0102:setShortcut("Alt+G")

QAbstractButton 的 setShortcut() 函数可以非常方便的为按钮设置快捷方式,该函数可以接收单个按键或者组合按键,当用户点击对应的按键时,即可触发按钮点击事件:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(300, 200)
btn.setText("按钮")
btn.setShortcut('Ctrl+Shift+D') 
btn.clicked.connect(lambda: print("按钮被点击了"))
# 3. 展示控件
btn.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x02:QAbstractButton 快捷键设置 — 演示案例

0x0201:错误示范 — 先赋值后设置快捷方式

这个案例,有点特殊,当我们修改了按钮的内容后,setShortcut() 是会失效的,看下面这个代码:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(400, 150)
btn.setText("1")
btn.setShortcut('Ctrl+A') 
btn.setText("2")
btn.clicked.connect(lambda: print("按钮被点击了"))
# 3. 展示控件
btn.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

我们先设置了按钮的快捷方式,然后又重新为按钮赋了一个值,实际运行后你会发现,你的 ctrl + A 直接失效了,若我们移除 btn.setText("2") 这行你的快捷方式又有用了(很神奇,笔者暂时不知道为啥)。

0x0202:正确案例 — 每次赋值后更新快捷方式

以下是正确示例,每次赋值重新更新按钮的快捷方式:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(400, 150)
btn.setText("1")
btn.setShortcut('Ctrl+A') 
​
def add():
    btn.setText(str(int(btn.text()) + 1))
    btn.setShortcut('Ctrl+A') # 重新设置快捷键
​
btn.clicked.connect(add)
# 3. 展示控件
btn.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue17 :: Hack3rX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值