🌟想系统化学习 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_())