2011-08-12 53 views
0

我有一個項目,我正在努力編程一個電梯「模擬器」。我第一次使用python和pyqt並且遇到了一些困難。 目前我有2個類,其中一個是電梯類,另一個是liftUI類,它有一個QLCDNumber小部件。我設置了電梯等級來將當前樓層和目的地樓層號碼發送到liftUI類,所以我想我可以使用while循環來讓LCD值改變,直到當前樓層和目的樓層相同,但它只是凍結,我不得​​不逼近。PyQt,試圖讓液晶顯示器qt部件倒計時

這裏是我此刻的代碼:

def lcdFloorNum(self, floorNum, curFloor): 
    if floorNum <= curFloor: 
     while floorNum <= curFloor: 
      self.ui.floorNumber.setProperty("value", floorNum) 
      floorNum -= 1 

這僅僅是當電梯明顯下降,我會做「漲」一旦這個工程... 它得到floorNum和curFloor來自另一個電梯級別的功能,我很確定它工作正常。如果我擺脫了while循環,它將更新數字,只是一次,直到結束。 是否有一些更好的代碼來實現我想要的那樣不會凍結GUI?

+0

我承擔你的實際代碼的縮進是正確的?即if語句和全部下面的所有縮進級別都是如此嗎? – bdeniker

回答

1

我想你想遞減curFloor不是嗎?你的聲明是while floorNum <= curFloor:。如果你遞減floorNum,那個陳述永遠是對的。

1

除了這裏提到的,你的代碼是在步驟之間改變的UI中顯示的數字,沒有任何時間(實際上不使GUI更新),其他的問題,所以它會「倒計時」這麼快你看不到它。

一個更好的辦法是使用QTimer,所以你可以模擬,例如每秒鐘往下一層或相似。看看QTimer和信號/插槽機制。我發現這個在這裏一個小PyQt的例子:http://www.rkblog.rk.edu.pl/w/p/qtimer-making-timers-pyqt4/