为什么我总是让错误消息控制器没有属性is_pressed?

发布于 2025-02-12 05:51:14 字数 573 浏览 1 评论 0原文

我一直在编码一个非常简单的自动化器。我的自动化器效果很好,但是杀死它的唯一方法是强制关闭我的计算机,因为它点击了如此之快,我无法访问我的任务栏。我可以使它变慢,但是我更喜欢用户使用按钮按下按钮关闭自动化器的一种方法。我已经尝试了如果键盘。IS_PRESSSED('q'):break,但是我总是会得到错误消息attributeError:'控制器'对象没有属性'is_pressed'。您的意思是:'alt_pressed'?我希望我的代码在按Q时打破循环,但是我会收到一个错误消息。错误消息也将弹出,而无需按Q的按下。到目前为止,我的代码是:

from pynput.mouse import Button, Controller
from pynput.keyboard import Key, Controller
import time

keyboard = Controller()
mouse = Controller()


while True:
    time.sleep(10)
    mouse.click(Button.left)
    if keyboard.is_pressed('q'):
        break

I've been coding a very simple autoclicker. My autoclicker works just fine, but the only way to kill it is forcefully shut down my computer because it clicks so fast I can't access my taskbar. I could make it slower, but I'd prefer a way for the user to close the autoclicker with the press of a button. I've tried if keyboard.is_presssed('q'): break but I always get the error message AttributeError: 'Controller' object has no attribute 'is_pressed'. Did you mean: 'alt_pressed'? I expected my code to break the loop when I press q, but instead I get an error message. The error message will also pop up without the pressing of q. My code as of now is:

from pynput.mouse import Button, Controller
from pynput.keyboard import Key, Controller
import time

keyboard = Controller()
mouse = Controller()


while True:
    time.sleep(10)
    mouse.click(Button.left)
    if keyboard.is_pressed('q'):
        break

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

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

发布评论

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

评论(1

鸵鸟症 2025-02-19 05:51:14

pynput没有is_presse() - 我不知道您在哪里找到它。

您应该使用pynput.keyboard.listener在按下q时运行代码结束程序。


您不能有两个具有相同名称控制器的对象。

一个控制器替换其他控制器,然后您使用相同的Controller来创建鼠标键盘代码> - 这使问题问题。

您必须使用pynput.mouse.controllerpynput.keyboard.pynput.controller

import pynput
from pynput.mouse import Button
from pynput.keyboard import Key
import time

keyboard = pynput.keyboard.Controller()
mouse    = pynput.mouse.Controller()

while True:
    time.sleep(10)
    mouse.click(Button.left)
    #if keyboard.is_pressed('q'):  # <-- this will need Listener()
    #    break

编辑:

q 您必须使用侦听器

例如:

import pynput
from pynput.mouse import Button
import time

mouse_controller = pynput.mouse.Controller()

def on_press(key):
    print('pressed:', key)
    if str(key) == "'q'":  # it has to be with `' '` inside `" "`
        # Stop listener
        print("exit listener")
        return False  # `False` ends listener

with pynput.keyboard.Listener(on_press=on_press) as keyboard_listener:
    
    while keyboard_listener.is_alive():
        time.sleep(10)
        mouse_controller.click(Button.left)
        print('clicked')

pynput doesn't have is_pressed() - I don't know where you find it.

You should rather use pynput.keyboard.Listener to run code when q is pressed and set some variable - q_is_pressed = True - or run code which ends program.


You can't have two objects with the same name Controller.

One Controller replaces other Controller and later you use the same Controller to create mouse and keyboard - and this makes problem.

You have to use pynput.mouse.Controller and pynput.keyboard.pynput.Controller

import pynput
from pynput.mouse import Button
from pynput.keyboard import Key
import time

keyboard = pynput.keyboard.Controller()
mouse    = pynput.mouse.Controller()

while True:
    time.sleep(10)
    mouse.click(Button.left)
    #if keyboard.is_pressed('q'):  # <-- this will need Listener()
    #    break

EDIT:

To end code when q was pressed you have to use Listener

For example:

import pynput
from pynput.mouse import Button
import time

mouse_controller = pynput.mouse.Controller()

def on_press(key):
    print('pressed:', key)
    if str(key) == "'q'":  # it has to be with `' '` inside `" "`
        # Stop listener
        print("exit listener")
        return False  # `False` ends listener

with pynput.keyboard.Listener(on_press=on_press) as keyboard_listener:
    
    while keyboard_listener.is_alive():
        time.sleep(10)
        mouse_controller.click(Button.left)
        print('clicked')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文