PyQt,正在尝试使LCD qt控件倒计时

2024-09-22 11:38:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个项目,我正在做,我必须编程一个电梯“模拟器”。我第一次使用python和pyqt,遇到了一些困难。 目前我有两个类,一个是电梯类,另一个是liftUI类,它有一个QLCDNumber小部件。我已经设置了电梯类,将当前楼层和目的楼层号发送给liftUI类,所以我想我可以使用while循环来更改lcd值,直到当前楼层和目标楼层相同为止,但它只是冻结,我必须强制关闭。在

以下是我目前掌握的代码:

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

这只是为了当电梯下降的时候,我会做“上升”一旦这个工作。。。 它从电梯类的另一个函数中获取floorNum和curFloor,我敢肯定它运行得很好。如果我去掉while循环,它将更新数字,只更新一次,直到结束。 有没有更好的代码来实现我想要的不会冻结GUI的代码?在


Tags: 项目代码self目的部件编程模拟器pyqt
2条回答

我想你想减量,不是吗?while语句是while floorNum <= curFloor:。如果减少floorNum,则该语句将始终为true。在

除了这里提到的其他问题外,您的代码正在更改UI中显示的数字,而不需要在步骤之间进行任何时间(实际上也不允许GUI更新),因此它将“倒计时”得如此之快,以至于您看不到它。在

一个更好的方法可能是使用一个QTimer,这样你就可以进行模拟,例如每秒钟下一层楼或类似的楼层。看看QTimer和signal/slot机制。我在这里找到了一个小的PyQT示例:http://www.rkblog.rk.edu.pl/w/p/qtimer-making-timers-pyqt4/

相关问题 更多 >