• 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
299 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 (254,630 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 (254,630 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 95 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ź 420 wizyt
pytanie zadane 9 listopada 2020 w Python przez KumberTwo Dyskutant (8,270 p.)

92,699 zapytań

141,614 odpowiedzi

320,146 komentarzy

62,058 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

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!

...