Python GUI 编程 | QAbstractButton 抽象按钮类详解 — 自动重复设置

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

“自动重复” 是指,当用户点击按钮不松开时,鼠标就会不断的发送信号,从而触发对应的槽函数。

0x01:QAbstractButton 自动重复设置 — 相关方法

0x0101:setAutoRepeat(bool) & autoRepeat()

QAbstractButton 的 setAutoRepeat() 方法可以用于是否启用自动重复,为 True 时启用,反之,则不启用;autoRepeat() 方法则可以用于判断指定按钮是否启用了自动重复:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(300, 200)
btn.setText("按钮")
btn.clicked.connect(lambda: print("按钮被点击了"))
btn.setAutoRepeat(True) # 设置按钮是否可以重复点击
print("按钮是否会重复点击:", btn.autoRepeat())
# 3. 展示控件
btn.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x0102:setAutoRepeatInterval() & autoRepeatInterval()

QAbstractButton 的 setAutoRepeatInterval() 可以设置自动重复检测的时间间隔,单位为毫秒;而 autoRepeatInterval() 则可以获得刚刚我们设置的那个时间:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(300, 200)
btn.setText("按钮")
btn.clicked.connect(lambda: print("按钮被点击了"))
btn.setAutoRepeat(True) # 设置按钮是否可以重复点击
btn.setAutoRepeatInterval(2000) # 设置重复点击的时间间隔
print("按钮自动重复点击的时间间隔为:", btn.autoRepeatInterval(), "毫秒")
# 3. 展示控件
btn.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x0103:setAutoRepeatDelay() & autoRepeatDelay()

QAbstractButton 的 setAutoRepeatDelay() 可以设置初次检测的延迟;而 autoRepeatDelay() 则可以获取我们设置的这个延迟:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(300, 200)
btn.setText("按钮")
btn.clicked.connect(lambda: print("按钮被点击了"))
btn.setAutoRepeat(True) # 设置按钮是否可以重复点击
btn.setAutoRepeatDelay(2000) # 设置按钮重复点击的延迟时间
print("按钮初次检测重复点击延迟为: ", btn.autoRepeatDelay(), "毫秒")
# 3. 展示控件
btn.show()
# 4. 应用程序的执行,进入到消息循环
sys.exit(app.exec_())

0x02:QAbstractButton 自动重复设置 — 演示案例

上面这个案例比较简单,直接秒了:

import sys
from PyQt5.Qt import *
​
# 1. 创建一个应用程序对象
app = QApplication(sys.argv)
# 2. 控件操作
btn = QPushButton()
btn.resize(300, 200)
btn.setText('1')
btn.clicked.connect(lambda: btn.setText(str(int(btn.text()) + 1)))
btn.setAutoRepeat(True)
# 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、付费专栏及课程。

余额充值