在简化的代码中:
from pynput import keyboard
import time
import pyautogui
class Test:
def __init__(self):
self.paused = False
def on_activate(self):
if self.paused:
pyautogui.alert(text='was paused', title='title', button='button')
self.paused = False
elif self.paused is False:
pyautogui.alert(text='was not paused', title='title', button='button')
self.paused = True
test = Test()
pyautogui.alert(text='test', title='title', button='button')
hotkey = keyboard.GlobalHotKeys({
'<ctrl>+a': test.on_activate
})
hotkey.start()
while True:
time.sleep(1)
我将收到错误Tcl_AsyncDelete: async handler deleted by the wrong thread
。
现在,我了解到,这是由于处理线程问题所致,或者说缺乏上述处理能力。我注意到,如果代码运行时没有类声明下面的alert();永远不会有这样的错误。
我相信我知道这是由于pynput在另一个pyautogui调用之前在另一个线程上工作;但是,由于我不再使用警报框了,因此有一种方法可以“适当地关闭”该线程并在另一个线程上对其进行操作?
我有些不知所措,我们将不胜感激。