• 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

Object Storage Arubacloud
0 głosów
282 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 (253,420 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 (253,420 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 83 wizyt
0 głosów
1 odpowiedź 123 wizyt
pytanie zadane 8 listopada 2020 w Python przez KumberTwo Dyskutant (8,270 p.)
0 głosów
1 odpowiedź 388 wizyt
pytanie zadane 9 listopada 2020 w Python przez KumberTwo Dyskutant (8,270 p.)

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,964 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...