【问题标题】:How can I make my program not run in an endless loop once my mouse button is pressed按下鼠标按钮后,如何使程序不会无限循环运行
【发布时间】:2021-07-19 11:05:03
【问题描述】:

所以我试图让程序一旦按下是真的就不会在无限循环中运行,并检查何时释放鼠标按钮并停止 while 循环。

from pynput import mouse
from pynput.mouse import Button, Controller
import time
m = Controller()


def on_click(x, y, button, pressed):
    print('Pressed' if pressed else 'Released')

    while (pressed):
        m.move(0, 1)
        time.sleep(.001)

with mouse.Listener(
        on_click=on_click) as listener:
    listener.join()

【问题讨论】:

  • 你不能那样做。您的事件处理程序必须执行一些简短的操作然后返回,否则mouse.Listener 无法侦听更多事件。你想在这里做什么?按下鼠标时移动鼠标?您将不得不为此使用计时器。 on_click 处理程序可以更新您的其他线程监控的全局状态。
  • 我试图做到这一点,如果我的鼠标左键被按下它会向下移动光标直到鼠标左键被释放

标签: python python-3.x pynput


【解决方案1】:

类似的东西。不要尝试休眠 1ms,会浪费太多资源。

from pynput import mouse
from pynput.mouse import Button, Controller
import time
m = Controller()

mousedown = False


def on_click(x, y, button, pressed):
    global mousedown
    print('Pressed' if pressed else 'Released')
    mousedown = pressed

listener = mouse.Listener(on_click=on_click) 

while True:
    if mousedown:
        m.move( 0, 1 )
    time.sleep( 0.1 )

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多