Python:如何区分长按,短按按钮和单击

Python:如何区分长按,短按按钮和单击,第1张

概述我想要一个带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,QtCoreclass 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_())
总结

以上是内存溢出为你收集整理的Python:如何区分长按,短按按钮和单击全部内容,希望文章能够帮你解决Python:如何区分长按,短按按钮和单击所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存