有用過Python開發UI的人應該都知道,Python的UI更新速度很慢,不是一般的慢,是超級慢。慢到時麼程度呢?大概就是你如果寫一個for迴圈更新比如20個Entry元件的文字顯示,會在UI上清楚的看到20個元件依序被刷新的畫面,20個更新完大概要1到2秒吧。 這樣的速度在有些需要即時反映且更新頻繁的案子上就會被客戶打槍了,因此有一個小方法雖然不能改變Python在UI上的更新速度,但至少可以不讓UI更新速度影響工作的進行 (UI它慢就慢,但我程序還是一樣照跑照跳)。 解法就是: 產生一個thread專門負責UI介面上的更新 我們在程式運作一開始,就先產生兩個thread,一個負責程序的進行,一個負責UI的更新。 來看source code: class EventHandleThread (threading.Thread): def __init__(self, fun, name): threading.Thread.__init__(self) self.name = name self.fun = fun self.stopped = [0] def run(self): self.fun(self.name, self.stopped) print ("Exiting " + self.name) def stop(self): self.stopped[0] = 1 #用來傳遞內容的Queue and Lock m_queueLock = threading.Lock() m_workQueue = queue.Queue(30) #UI thread的運作function def UiHandleLoop(self, name,...
留言
張貼留言