Как я могу использовать цикл слушателя для события клавиатуры, когда работает цикл Tkinker, когда слушатель также должен работать, когда он свернут - PullRequest
0 голосов
/ 21 июня 2019

Программа должна быть способна обнаруживать ввод с клавиатуры при работе в фоновом режиме. И есть еще один цикл от TKinker, работающий для графического интерфейса.

Я пытался использовать события от Tkinker, но они работают, только когда окно графического интерфейса сфокусировано. Потоки были моей второй попыткой, но слушатель клавиатуры работает только после закрытия графического интерфейса.

from pynput.keyboard import Key, Controller, Listener
from threading import *

[...]

keyboard = Controller()
#gui display and listener
def gui():
    window.mainloop()

#keyboard listener
def keyboardlistener():
    with Listener(on_release=on_release) as listener:
        listener.join()
thread1 = Thread(target = gui)
thread2 = Thread(target = keyboardlistener)

thread1.start()
thread2.start()
# Do work indepedent of loopA and loopB 
thread1.join()
thread2.join()

Я получил RuntimeError: Calling Tcl from different appartment, когда помещал слушателя в первый поток.

...