赞
踩
功能需求:
准备通过写一个上位机遥控器界面控制电机转动,具体功能与赛车游戏类似,当按下键盘一个键位时(以数字4键为例),界面上的“上”按钮变暗,只触发按钮事件一次,直到松开键盘键位,按钮复原,电机停转。
ps:起初想以按钮的setAutoRepeat()函数实现,发现没有效果,qt小白,有知道的大佬可以指教一下。
代码只给出类里面具体的两个重载函数,其余部分不懂的可以评论区:
- def keyPressEvent(self,event): #重载
- if event.key() == Qt.Key_4:
- print("按键被按下")
- self.pushButton.click() #点击创建的按钮实例,前提:按钮已绑定自定义事件
- self.pushButton.setEnabled(False) #阻止按钮事件发生,防止重复触发按钮事件
-
- def keyReleaseEvent(self, event): #重载
- if event.key() == Qt.Key_4:
- if event.isAutoRepeat(): #按钮按下状态,为True
- pass
- else: #按钮释放状态,为False
- print("键盘被松开")
- self.pushButton.setEnabled(True) #按钮释放,恢复点击按钮触发事件功能
- self.pushButton.toggle() #按钮释放,恢复按钮状态(按钮由暗变亮)
具体实现效果简单描述就是,长按按键4时,只会传输一次控制指令给电机,界面的对应按钮会从亮变暗(自己设置的效果,亮代表没按,暗代表按钮按下),只有释放按钮时会传输一次停止控制指令给电机,界面的对应按钮会从暗变亮。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。