Tkinter:Nootbook标签中的框架中的文本未绘制

时间:2019-05-20 13:38:22

标签: python-2.7 tkinter

OS是Win7 64位,Python是2.7.16 64位。我有一个简单的Tkinter GUI:包含一个带有两个标签的Notebook的根。第一个选项卡包含一个框架,其中包含一个按钮。第二个选项卡包含一个框架,其中包含一个文本。绑定到Button的命令会生成一个用于设置Text内容的线程。

import Tkinter
import ttk
import threading

r = Tkinter.Tk()
n = ttk.Notebook(r)
n.pack(expand=1, fill="both")
control = ttk.Frame(n)
info = ttk.Frame(n)
tInfo = Tkinter.Text(info)
tInfo.pack(expand=1, fill="both")
n.add(control, text='Control')
n.add(info, text='Info')

infoMutex = threading.Lock()

def doGuiTest():
    try:
        infoMutex.acquire()
        tInfo.config(state='normal')
        tInfo.delete('1.0', Tkinter.END)
        tInfo.insert(Tkinter.END, 'Test')
        tInfo.config(state='disabled')
    finally:
        infoMutex.release()

def workerThread():
    doGuiTest()

def execute():
    worker=threading.Thread(target=workerThread)
    worker.start()

bExecute=Tkinter.Button(control, text='Execute', command=execute)
bExecute.pack()

r.mainloop()

预期结果:单击“按钮”后,文本与设置的内容可靠地可见。

实际结果:仅当在单击“按钮”之前手动将包含“文本”的选项卡置于前台时,“文本”才可见。

当我直接从Button的命令设置Text的内容时,一切都会按预期进行。可悲的是,在实际的应用程序中,我正在处理由Button触发的功能,该功能将运行几分钟,因此必须使用另一个线程。

要实现一致的行为,我缺少什么?

0 个答案:

没有答案