延迟的Tkinter文本突出显示不起作用

时间:2014-05-05 14:40:49

标签: python python-2.7 tkinter

目标:按一个按钮,逐个显示和更改列表中元素的背景,延迟时间为n秒,直到整个文本突出显示。

我包裹着:

text2.insert(INSERT,sonsilabo,"silabo")
text2.pack()
time.sleep(2)

在for循环中为每个元素执行此操作。

但程序仍在等待整个周期完成并显示最终结果。

from Tkinter import *
import Tkinter
import time

root = Tk()

text2 = Text(root)
text2.tag_config("silabo",background="green")

teksto = ['Sa','lu','to','n',' ','mi',' ','no','mi','ĝa','s',' ','A','b','de','l']

def kolorigu():
    text2.delete('1.0', END)
    for sonsilabo in teksto:
        text2.insert(INSERT,sonsilabo,"silabo")
        text2.pack()
        time.sleep(2)

text2.pack()
B = Button(root, text ="Kolorigu", command = kolorigu)
B.pack()

root.mainloop()

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

添加一些文字后,您需要通过调用text2.update_idletasks来更新文本框:

def kolorigu():
    text2.delete('1.0', END)
    for sonsilabo in teksto:
        text2.insert(INSERT,sonsilabo,"silabo")
        ########################
        text2.update_idletasks()
        ########################
        time.sleep(2)

此外,我删除了text2.pack()内的kolorigu行,因为这是不必要的。