如何在不中断tkinter主循环的情况下运行函数,又如何从该函数向主循环中的小部件发送信息?

时间:2019-07-30 14:23:17

标签: python tkinter

很抱歉,是否曾经有人问过这个问题,但我找不到明确的答案。我正在编写一个GUI来从树莓派控制马达,它在触摸屏上。我编写了一些代码,当Entry小部件成为焦点时,它们会打开内置的火柴盒键盘,但这会在后台暂停我的整个tkinter窗口,这意味着用户必须先关闭才能看到输入的内容。键盘,以及挂在背景中的屏幕经常会撕裂并看起来很恐怖。无论如何,是否有运行此命令的信息: def createNumpad(event=none): os.system('matchbox-keyboard numpad') 以便在打开键盘时tkinter窗口不会冻结?谢谢!

1 个答案:

答案 0 :(得分:1)

这是SO answer中的相关代码,已更改为适合Tkinter:

import subprocess

def createNumpad(event)
    try:
        subprocess.Popen(["matchbox-keyboard", "numpad"])
    except FileNotFoundError:
        pass

def deleteNumpad(event):
    subprocess.Popen(["killall","matchbox-keyboard"])

#
entry.bind("<Enter>", createNumpad)
entry.bind("<Leave>", deleteNumpad)