ラベルの更新をしたいのですが、1つの関数で2回更新したいのですがsleepのような時間の要する関数を使ってもラベルのテキストは更新されないのです。それは、mainloopの最後に到達したときに更新されるからかなと考えたのですが、更新させる方法はありますでしょうか?

以下のコードは直面した問題を抽象化したものです。sleepは時間のかかる処理とでも置き換えてください。実際にこのコードを実行すると、この問題に直面すると思います。

from Tkinter import *
import time

class Window:
    def __init__(self):
        self.flg = False
        self.root = Tk()
        self.txt = StringVar()
        Button(self.root, text="test", command=self.changeLabel).pack()
        self.txt.set("hoge")
        Label(self.root, textvariable=self.txt).pack()

    def changeLabel(self):
        self.txt.set("hogehoge")
        time.sleep(2) # sleepのような時間のかかる処理がしたい
        self.txt.set("hogehogehoge")

if __name__ == '__main__':
    w = Window()
    w.root.mainloop()

よろしくお願いします。