簡體   English   中英

PyQt,試圖讓液晶屏 qt 小部件倒計時

[英]PyQt, trying to make LCD qt widget countdown

我有一個項目正在做,我必須對電梯“模擬器”進行編程。 我第一次使用 python 和 pyqt 並且遇到了一些困難。 目前我有 2 個課程,一個是電梯 class,另一個是具有 QLCDNumber 小部件的 liftUI class。 我設置了電梯 class 以將當前樓層和目標樓層號發送到 liftUI class 所以我想我可以使用一個while循環來改變液晶顯示器的值,直到當前樓層和目標樓層相同,但它只是凍結,我必須強制關閉。

這是我目前擁有的代碼:

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

這僅適用於當電梯明顯下降時,一旦它工作,我會“上升”......它從電梯 class 中的另一個 function 獲取 floorNum 和 curFloor ,我很確定它工作正常。 如果我擺脫了 while 循環,它會更新數字,只更新一次,直到最后。 有沒有更好的代碼來實現我想要的不會凍結 GUI 的東西?

我想你想減少curFloor不是嗎? 您的 while 語句是while floorNum <= curFloor: 如果您減少floorNum ,則該語句將始終為真。

除了此處提到的其他問題之外,您的代碼正在更改 UI 中顯示的數字,而步驟之間沒有任何時間(實際上不允許 GUI 更新),因此它會“倒計時”如此之快,以至於您看不到它。

更好的方法可能是使用 QTimer 以便您可以模擬,例如每秒下一層樓或類似情況。 看看 QTimer 和信號/槽機制。 我在這里找到了一個小的 PyQT 示例: http://www.rkblog.rk.edu.pl/w/p/qtimer-making-timers-pyqt4/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM