PyQt5按钮控件QPushButton自动重复和重复间隔时间设置
在QAbstractButton子类的按钮控件动作主要是点击,一次点击又分为2个动作即:按下和松开。以按钮控件QPushButton来演示一下按钮自动重复功能,指的是当按下按钮的时候不松手,按钮会一直执行某个动作。
在QAbstractButton子类的按钮控件动作主要是点击,一次点击又分为2个动作即:按下和松开。以按钮控件QPushButton来演示一下按钮自动重复功能,指的是当按下按钮的时候不松手,按钮会一直执行某个动作。
按钮自动重复中我们学习几个方法:
btn.setAutoRepeat() # 设置自动重复 btn.setAutoRepeatInterval() # 设置自动重复检查间隔 btn.setAutoRepeatDelay() # 设置除此检测延时 btn.autoRepeat() # 获取是否自动重复 btn.autoRepeatInterval() # 获取自动重复间隔 btn.autoRepeatDelay() # 获取自动重复除此检测时长
下面我们来测试一下这几个方法,因为截图和代码不能形象的展示,大家可以复制代码自己测试一下。先看看自动重复setAutoRepeat(),这里传入bool值作为参数。
btn.setText('自动重复按钮') btn.setAutoRepeat(True) # 设置自动重复 btn.pressed.connect(lambda: print('自动重复'))
结果虽然现实出来了,但是这样的自动重复速度太快,所以我们可以使用setAutoRepeatInterval()来设置一下重复间隔时间,内部参数为Int值,单位是毫秒。
btn.setText('自动重复按钮') btn.setAutoRepeat(True) # 设置自动重复 btn.setAutoRepeatInterval(1000) # 设置自动重复检查间隔 btn.pressed.connect(lambda: print('自动重复'))
其中setAutoRepeatDelay()的效果是鉴于以上2个方法之间,只有首次延时。
btn.setText('自动重复按钮') btn.setAutoRepeat(True) # 设置自动重复 # btn.setAutoRepeatInterval(1000) # 设置自动重复检查间隔 btn.setAutoRepeatDelay(2000) # 设置除此检测延时 btn.pressed.connect(lambda: print('自动重复'))
以上三种方法就是设置按钮控件自动重复的主要方法,相对于的就是获取,这里就不一一演示了,大家自己操作一下即可,完整代码放在下面。
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('按钮自动重复功能 - PyQt5中文网') window.resize(600, 450) btn = QPushButton(window) btn.move(60, 60) btn.resize(80, 40) btn.setText('自动重复按钮') btn.setAutoRepeat(True) # 设置自动重复 btn.setAutoRepeatInterval(1000) # 设置自动重复检查间隔 # btn.setAutoRepeatDelay(2000) # 设置除此检测延时 btn.pressed.connect(lambda: print('自动重复')) print(btn.autoRepeat()) print(btn.autoRepeatInterval()) # btn.autoRepeatDelay() # 获取自动重复除此检测时长 window.show() sys.exit(app.exec_())