想检测按键一直被按下去的状态该怎么写?

发布于 2021-12-01 15:15:25 字数 58 浏览 807 评论 3

pyqt5做了一个pushbutton,当这个pushbutton一直被按下时,i不停自加怎么实现呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

简单气质女生网名 2021-12-06 00:45:25

引用来自“南城小镇”的评论

import sys
from PyQt5.QtWidgets import QFrame,QPushButton,QLabel
from PyQt5.QtCore import QBasicTimer

class demo(QFrame):
    def __init__(self):
        super().__init__()
        self.button = QPushButton(self)
        self.button.setText('一个按钮')
        self.button.pressed.connect(self.onMouseDown)
        self.button.released.connect(self.onMouseUp)
        self.button.move(50,50)
        self.resetbtn = QPushButton(self)
        self.resetbtn.clicked.connect(self.resetCount)
        self.resetbtn.setText('重置')
        self.resetbtn.move(50,150)
        self.label = QLabel(self)
        self.label.move(150,50)
        self.count = 0;
        self.speed = 0.1;
        self.label.setText(str(self.count))
        self.timer = QBasicTimer()

    def updateLabel(self):
        self.label.setText(str(self.count))
        self.label.adjustSize()

    def onMouseDown(self):
        print('button is pressed')
        if not self.timer.isActive():
            self.timer.start(self.speed,self)

    def onMouseUp(self):
        self.timer.stop()

    def timerEvent(self,event): 
        self.count = self.count+1
        #print(self.count)
        self.updateLabel()
    
    def resetCount(self):
        self.count = 0
        self.updateLabel()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    d = demo()
    d.show()
    sys.exit(app.exec_())

主要是 QBasicTimer 和 timerEvent 的结合使用

策马西风 2021-12-05 22:31:02
import sys
from PyQt5.QtWidgets import QFrame,QPushButton,QLabel
from PyQt5.QtCore import QBasicTimer

class demo(QFrame):
    def __init__(self):
        super().__init__()
        self.button = QPushButton(self)
        self.button.setText('一个按钮')
        self.button.pressed.connect(self.onMouseDown)
        self.button.released.connect(self.onMouseUp)
        self.button.move(50,50)
        self.resetbtn = QPushButton(self)
        self.resetbtn.clicked.connect(self.resetCount)
        self.resetbtn.setText('重置')
        self.resetbtn.move(50,150)
        self.label = QLabel(self)
        self.label.move(150,50)
        self.count = 0;
        self.speed = 0.1;
        self.label.setText(str(self.count))
        self.timer = QBasicTimer()

    def updateLabel(self):
        self.label.setText(str(self.count))
        self.label.adjustSize()

    def onMouseDown(self):
        print('button is pressed')
        if not self.timer.isActive():
            self.timer.start(self.speed,self)

    def onMouseUp(self):
        self.timer.stop()

    def timerEvent(self,event): 
        self.count = self.count+1
        #print(self.count)
        self.updateLabel()
    
    def resetCount(self):
        self.count = 0
        self.updateLabel()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    d = demo()
    d.show()
    sys.exit(app.exec_())

主要是 QBasicTimer 和 timerEvent 的结合使用

半世蒼涼 2021-12-04 11:15:41

没写过这个  但是应该也差不多   除了click之外  应该有touchstart/touchend或者mousedown/mouseup类似这样的事件的吧   

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文