Python:如何区分长按,短按按钮和单击
发布时间:2020-12-20 11:24:11 所属栏目:Python 来源:网络整理
导读:我想要一个带4个按钮的简单GUI.如果只是单击按钮,则应执行功能A,对于短按钮按下(例如1秒),应执行功能B,最后应执行长按(例如 2s)功能C. 想象一下柜台. 如果单击该按钮,它将重置为0 如果您短按按钮,计数器将增加1,例如t = 1秒 如果长按按钮,计数器将增加10,直
我想要一个带4个按钮的简单GUI.如果只是单击按钮,则应执行功能A,对于短按钮按下(例如1秒),应执行功能B,最后应执行长按(例如> 2s)功能C.
想象一下柜台. 如果单击该按钮,它将重置为0 如果您短按按钮,计数器将增加1,例如t = 1秒 如果长按按钮,计数器将增加10,直到释放按钮. 有人有想法吗?我试图通过第二个线程来完成它但我没有找到停止线程的可能性,就像你可以启动它一样 解决方法
如果你使用一个继承QAbstractButton的小部件,这在PyQt中很容易做到.不需要任何计时器或单独的线程.只需使用内置的
auto-repeat功能,并记录当前状态.
这是一个简单的演示: from PyQt4 import QtGui,QtCore class Button(QtGui.QPushButton): def __init__(self,*args,**kwargs): QtGui.QPushButton.__init__(self,**kwargs) self.setAutoRepeat(True) self.setAutoRepeatDelay(1000) self.setAutoRepeatInterval(1000) self.clicked.connect(self.handleClicked) self._state = 0 def handleClicked(self): if self.isDown(): if self._state == 0: self._state = 1 self.setAutoRepeatInterval(50) print 'press' else: print 'repeat' elif self._state == 1: self._state = 0 self.setAutoRepeatInterval(1000) print 'release' else: print 'click' if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) button = Button('Test Button') button.show() sys.exit(app.exec_()) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |