本文基于:windows 7 + python 3.4
知識點:
1. 将 time.sleep 替換為 QTimer
2. 将 time.sleep 放入到 QThread
3. 使用 QThread 自己的 sleep 方法
我們希望實作一個這樣的小程式:

當點選開始按鈕的時候,下面的文本标簽每隔一秒自動加1。
<a></a>
看起來沒有任何邏輯上的錯誤。
那就運作一下看看,點選按鈕。。。神馬情況?主界面卡死了!如圖
我猜測這可能與python的GIL問題有關:
1. time庫是純python的,而PyQt的背後是Qt,這是純C++的。
2. 換句話說,就是time.sleep(1)時,并沒有将CPU控制權交還給Qt,進而造成界面卡死
解決這個問題,既然不能用 python 的 time 庫,那就用 PyQt 自己的 QTimer 類
再運作一下。。。 OK,搞定!如圖:
解決這個問題的另外一個思路:開一個線程,專門用于計時(即:專門運作 time.sleep)
在 QThread 中使用 time.sleep 和 for 循環,無壓力!
當然,線程與主視窗的通信使用了信号/槽。
代碼如下:
本文轉自羅兵部落格園部落格,原文連結:http://www.cnblogs.com/hhh5460/p/5175322.html,如需轉載請自行聯系原作者