非法指令:4 在 tkinter 中使用 pynput 键盘时

问题描述 投票:0回答:1

我试图使用 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
python python-3.x tkinter python-multithreading pynput
1个回答
0
投票

看完评论后,我仍然无法通过线程解决问题。但是,我成功地使用了子进程。感谢@Tim Roberts 的评论。

© www.soinside.com 2019 - 2024. All rights reserved.