pynput.mouse funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Gödel
User
Beiträge: 20
Registriert: Samstag 16. April 2022, 15:32

Also ich habe pynput installiert und ansich funktioniert es auch gut nur habe ich ein problem mit meinem Programm. Es bewegt die Maus nur wenn ich irgendeine Taste drücke und ich weiß nicht warum, weil eigentlich soll sich die Position der Maus permanent ändern. Kann mir vielleicht jemand helfen?

Code: Alles auswählen

from pynput import keyboard
from pynput.mouse import Controller

def escape():
    with keyboard.Events() as events:
        for event in events:
            if event.key == keyboard.Key.esc:
                return False
            else:
                return True

mouse = Controller()
run = True
while run:
    run = escape()
    position = mouse.position
    x, y = position
    x += 1
    y += 1
    mouse.position = (x, y)

print('Finished')
print('Now we have moved it to {0}'.format(
    mouse.position))
Danke schon mal für Antworten.
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Gödel: Das stimmt nicht. Das Problem ist Deine `escape()`-Funktion blockiert bis eine Taste gedrückt wurde. Das nächste Problem ist dann, dass man von dem Events-Objekt nicht ständig neue erzeugen darf. Zumindest bei einem X-Server endet das schnell in einer Fehlermeldung, dass zu viele X-Clients erstellt wurden.

Das hier funktioniert bei mir:

Code: Alles auswählen

#!/usr/bin/env python3
from pynput.keyboard import Events, Key
from pynput.mouse import Controller


def check_for_escape(events):
    event = events.get(0.01)
    return event and event.key == Key.esc


def main():
    with Events() as events:
        mouse = Controller()
        while not check_for_escape(events):
            x, y = mouse.position
            mouse.position = (x + 1, y + 1)

        print("Finished")
        print(f"Now we have moved it to {mouse.position}")


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Gödel
User
Beiträge: 20
Registriert: Samstag 16. April 2022, 15:32

Oh danke, das wusste ich nicht.
Antworten