PyQt5 如何判断按钮是否被连续按下?
How to figure out whether button is continuosly pressed or not in PyQt5?
对于我的应用程序,我需要我的电梯系统在按下按钮时上升,而在我不按下按钮时它应该停止。
clicked() 函数不适用于此目的。但是 pressed() 和 released() 函数也不起作用。
我在下面截取了代码的相关部分。我的目标是只要按下按钮就打印“按下”文本
def __init__(self):
manual_button = QPushButton('Lift Button')
manual_button.pressed.connect(press_function)
self.manual_grid.addWidget(manual_button, 0, 1)
def press_function(self):
print('pressed')
谢谢
只需使用 pressed
和 released
信号到 start/stop 和 QTimer
。像...
#!/usr/local/bin/python3
import os
import sys
from PyQt5.QtCore import(QTimer)
from PyQt5.QtWidgets import(QApplication, QPushButton)
def button_pressed(timer):
timer.start(100)
def button_released(timer):
timer.stop()
if __name__ == '__main__':
app = QApplication(sys.argv)
pb = QPushButton("Press")
timer = QTimer()
pb.pressed.connect(lambda checked = False: button_pressed(timer))
pb.released.connect(lambda checked = False: button_released(timer))
timer.timeout.connect(lambda: print('Button Pressed'))
pb.show()
app.exec_()
对于我的应用程序,我需要我的电梯系统在按下按钮时上升,而在我不按下按钮时它应该停止。
clicked() 函数不适用于此目的。但是 pressed() 和 released() 函数也不起作用。
我在下面截取了代码的相关部分。我的目标是只要按下按钮就打印“按下”文本
def __init__(self):
manual_button = QPushButton('Lift Button')
manual_button.pressed.connect(press_function)
self.manual_grid.addWidget(manual_button, 0, 1)
def press_function(self):
print('pressed')
谢谢
只需使用 pressed
和 released
信号到 start/stop 和 QTimer
。像...
#!/usr/local/bin/python3
import os
import sys
from PyQt5.QtCore import(QTimer)
from PyQt5.QtWidgets import(QApplication, QPushButton)
def button_pressed(timer):
timer.start(100)
def button_released(timer):
timer.stop()
if __name__ == '__main__':
app = QApplication(sys.argv)
pb = QPushButton("Press")
timer = QTimer()
pb.pressed.connect(lambda checked = False: button_pressed(timer))
pb.released.connect(lambda checked = False: button_released(timer))
timer.timeout.connect(lambda: print('Button Pressed'))
pb.show()
app.exec_()