我试图使用 pynput 与 tkinter 创建自动键盘打字机。 pynput 键盘打字机是使用自定义线程制作的(注意:我遵循了现在找不到的某个教程)。当单独执行时,它工作正常,但是当使用 tkinter 执行时,它会产生一个
Illegal Instruction: 4
错误。
编辑:根据@Karl的建议,我做了一个最小的例子。以下代码片段重新创建了完全相同的问题:
import tkinter,threading,pynput,time
keyb = pynput.keyboard.Controller()
global thread_save
def typer(*args):
while True:
# print("spam")
keyb.type("hi")
time.sleep(0.1)
def beginning(*args):
global thread_saved
print("pressed")
thread_saved = threading.Thread(target=typer)
thread_saved.start()
thread_saved.run()
root = tkinter.Tk()
but = tkinter.Button(text="Begin",master=root)
but.bind("<1>",beginning)
but.pack()
root.mainloop()
预期结果:点击按钮后,键盘上会一遍又一遍地敲出“hi”这个词
当前结果: 程序因非法指令而崩溃:4
系统版本:
MacOS 10.15.7
英特尔Mac
套餐:
pynput==1.7.6
pyobjc-core==10.0
pyobjc-framework-ApplicationServices==10.0
pyobjc-framework-Cocoa==10.0
pyobjc-framework-Quartz==10.0
six==1.16.0
看完评论后,我仍然无法通过线程解决问题。但是,我成功地使用了子进程。感谢@Tim Roberts 的评论。