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

Kończenie programu pod przyciskiem - Python

42 Warsaw Coding Academy
0 głosów
1,617 wizyt
pytanie zadane 1 marca 2021 w Python przez 12332112332121 Dyskutant (8,270 p.)
Mam program w którym używam while(True). W tej pętli znajduje się również time.sleep(), który może trwać nawet 0,3 sekundy. Chciałbym mieć możliwość przerwanie tej pętli i całego programu po wciśnięciu przycisku. Da się to jakoś zrobić?
1
komentarz 1 marca 2021 przez WebPagesLike Użytkownik (980 p.)
np. mógłbym podczas kliknięcia przycisku zmienic zmienną RUN na false. a pętle nie była by while(true) tylko while(run)

2 odpowiedzi

+1 głos
odpowiedź 1 marca 2021 przez Michałełe Nałogowiec (25,600 p.)
wybrane 1 marca 2021 przez 12332112332121
 
Najlepsza
To co kolega wyżej pisze jest dobre, tylko problem będzie gdy nacisnę klawisz podczas tego sleep'a - będzie lekkie opóźnienie.

Dlatego ja proponuje aby program był wykonywany w dwóch wątkach - jeden (właściwy) gdzie jest pętla i wykonuje co trzeba, oraz drugi, w którym monitorujemy input i jeśli użytkownik wciśnie odpowiedni przycisk to zabijamy cały program.
komentarz 1 marca 2021 przez 12332112332121 Dyskutant (8,270 p.)
To opóźnienie nie będzie mi za bardzo przeszkadzać, ale i tak spróbuję sposobu o którym piszesz. Dzięki.
+1 głos
odpowiedź 1 marca 2021 przez gagyn Stary wyjadacz (11,050 p.)
Jaki to jest program? Konsolowy?

Jeśli konsolowy, to jak chciałbyś mieć przycisk w konsoli?

Rozwiązaniem wtedy może być przerwanie programu za pomocą skrótu CTRL+C lub po prostu zamknięcie okienka w konsoli.

Jeśli masz na myśli program okienkowy, to mam nadzieję, że w żadnym momencie nie blokujesz całego wątku na którym jest interfejs ;)

Doprecyzuj, jaki masz rodzaj tego projektu.
komentarz 1 marca 2021 przez Hunter94 Mądrala (6,290 p.)

Jeśli konsolowy, to jak chciałbyś mieć przycisk w konsoli?

Np, ncurses wink

komentarz 1 marca 2021 przez 12332112332121 Dyskutant (8,270 p.)

@gagyn, Faktycznie trochę nie doprecyzowałem. Piszę program konsolowy w tkinterze. I właśnie chyba cały wątek blokuje xd. Problem w tym że wcześniej za bardzo nie używałem podziału na wątki stąd nie wiedziałem w którą stronę się kierować.

Podobne pytania

+1 głos
1 odpowiedź 699 wizyt
pytanie zadane 19 października 2016 w JavaScript przez niezalogowany
0 głosów
3 odpowiedzi 537 wizyt
pytanie zadane 17 października 2022 w Python przez Ichbinda Nowicjusz (230 p.)
0 głosów
1 odpowiedź 654 wizyt
pytanie zadane 14 września 2021 w Python przez Gowi Użytkownik (830 p.)

93,382 zapytań

142,381 odpowiedzi

322,539 komentarzy

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...