v2.5.2
Giriş yap

python event.wait ardından çalışmaya devam etme

munzevi
272 defa görüntülendi

merhaba,

python'a öğrenmeden daldığım için, basit bir noktada takıldım.

import pyautogui
import threading
import keyboard
def set_interval(func, num=0):
    def func_wrapper():
        set_interval(func, num+1)
        func()
    t = threading.Timer(0.05, func_wrapper)
    e = threading.Event()
    if keyboard.is_pressed('x'):
                print('durduruldu. toplam %d istek yapıldı' % (num-1))
                e.wait()
                if keyboard.is_pressed('x'):
                    e.clear()
    else:
        print('%d. kez istek çalıştırılıyor...' % (num))
        t.start()
    return t
def tuslar():
    pyautogui.press('q')
set_interval(tuslar)

komut çalıştırıldığında saniyede 20 defa q tuşuna basıyor x tuşuna basarak bu işlemi beklemeye alabiliyorum ama tekrar x tuşuna bastığımda işleme devam edemiyorum.

Cevap yaz
Cevaplar (1)
admin
614 gün önce

time sleep koydum çünkü klavyeyi dinlerken sorun çıkıyor.


import time
import keyboard

num=0
paused=False

while True:
    print("q ya basılıyor")
    time.sleep(0.05)
    num = num+1
    if keyboard.is_pressed('x'):
        paused=True

    if(paused):
        print('durduruldu. toplam %d istek yapıldı' % (num))
        while True:
            time.sleep(0.1)
            if keyboard.is_pressed('x'):
                print("x'e tekrar basildi")
                paused=False
                num = 0
                time.sleep(1)
                break

q ya basma işi thread te çalışacak kadar önemli ise q'ya basılıyor kısmında thread ile o fonksiyonu çalıştırabilirsin.

soruna gelecek olursak. durduğun thread i tekrar çalıştırmak için başka bir thread de klavyeyi dinleyip tekrar x e basıldığı vakit çalışmasına devam ettirebilirsin. Thread durduğu vakit klavyeyi dinleyecek bir akış kalmıyor.