• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python, pyautogui, keyboard - Chce żeby kiedy działa program to po kliknieciu jakiegos przycisku sie skonczyl

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
382 wizyt
pytanie zadane 28 czerwca 2023 w Python przez RybaYT23 Początkujący (250 p.)
import keyboard
import pyautogui
import time
while True:
    pyautogui.moveTo(100, 100, duration=4)
    time.sleep(3)
    pyautogui.moveTo(50, 50, duration = 3)
    if keyboard.is_pressed("a"):
        print("You pressed 'a'.")
        exit()

Chciałbym że jak myszka sie przesuwa w te kordynaty 100, 100 to mógłbym podczas działania jakiego kolwiek kodu kliknął na klawiaturze "a" i by sie zatrzymał. Proszę o pomoc pozdrawiam

komentarz 28 czerwca 2023 przez VBService Ekspert (256,320 p.)

Doprecyzuj:

  1. w tytule pytasz o zakończenie programu
  2. w pytaniu o zatrzymanie (wstrzymanie) wykonywania kodu

które? Bo to nie jest to samo.

1 odpowiedź

0 głosów
odpowiedź 28 czerwca 2023 przez VBService Ekspert (256,320 p.)
edycja 28 czerwca 2023 przez VBService

Chyba się domyślam o co Tobie chodzi, że w trakcie działania tego fragmentu kodu

    pyautogui.moveTo(100, 100, duration=4)
    time.sleep(3)

jeżeli kursor "wyjdzie" poza okno,  w którym wykonuje się kod python-a, nie działa "obsługa" zdarzeń dla

if keyboard.is_pressed("a"):

dzieje się tak, ponieważ

import keyboard

nie "obsługuje tzw. nasłuchiwania" poza oknem aktywnym gdzie działa kod python-a.

Spróbuj użyć: pynput (który m. in. "potrafi" obsługiwać zdarzenia, nawet gdy kursor jest poza oknem)

from pynput import keyboard

no i

time.sleep(...)

powoduje zatrzymanie wykonywania kodu, w przykładzie posłużyłem się time.time(), żeby dodać opóźnienie między kolejnymi ruchami myszki, ale bez zatrzymywania pętli while, ale spróbuj też zapoznać się z: How to Add Time Delays to Your Code.

 

przykład

import pyautogui
from pynput import keyboard
from time import time, sleep

def on_press(key):
    if key == keyboard.Key.esc:
        # Wykryto wciśnięcie klawisza 'esc'
        return False  # Zakończ nasłuchiwanie

# Utworzenie obiektu nasłuchującego
listener = keyboard.Listener(on_press=on_press)

# Rozpoczęcie nasłuchiwania
listener.start()

move_duration = 1
move_interval = 3
start_time = time()


pyautogui.moveTo(100, 100, duration=move_duration)
step = 2

while True:
    if time() - start_time > move_interval and step == 1:
        pyautogui.moveTo(100, 100, duration=move_duration)
        start_time = time()
        step = 2
        
    if time() - start_time > move_interval / 2 and step == 2:
        pyautogui.moveTo(50, 50, duration=move_duration)
        start_time = time()
        step = 1

    if not listener.is_alive():
        print("Wciśnięto klawisz 'esc'.")
        sleep(3)
        break

# Oczekiwanie na zakończenie nasłuchiwania
listener.join()

exit()

 

 

BTW, za pomocą pynput też możesz m. in. "sterować" kursorem myszki, więc można ewentualnie zrezygnować z u użycia pyautogui.

 

Podobne pytania

+1 głos
2 odpowiedzi 149 wizyt
0 głosów
1 odpowiedź 164 wizyt
pytanie zadane 8 listopada 2020 w Python przez KumberTwo Dyskutant (8,270 p.)
0 głosów
1 odpowiedź 507 wizyt
pytanie zadane 9 listopada 2020 w Python przez KumberTwo Dyskutant (8,270 p.)

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...