PyQt, пытается сделать обратный отсчет виджета LCD Qt - PullRequest
0 голосов
/ 12 августа 2011

У меня есть проект, над которым я работаю, чтобы запрограммировать «симулятор» лифта. Я использую python и pyqt впервые и испытываю некоторые трудности. На данный момент у меня есть 2 класса, один класс лифта, другой класс 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, он обновит номер только один раз, а не до конца. Есть ли лучший код для достижения того, что я хочу, чтобы не заморозить графический интерфейс?

Ответы [ 2 ]

1 голос
/ 13 августа 2011

В дополнение к другим проблемам, упомянутым здесь, ваш код меняет число, отображаемое в пользовательском интерфейсе, без какого-либо промежутка времени между шагами (и, действительно, не позволяя обновлять графический интерфейс), поэтому он будет «отсчитывать» так быстро, что вы сможете не вижу этого.

Лучшим подходом может быть использование QTimer, чтобы вы могли имитировать, например, спускаясь на один этаж каждую секунду или подобное. Посмотрите на QTimer и механизм сигнала / слота. Я нашел небольшой пример PyQT этого здесь: http://www.rkblog.rk.edu.pl/w/p/qtimer-making-timers-pyqt4/

1 голос
/ 12 августа 2011

Я думаю, вы хотите уменьшить curFloor не так ли?Ваше заявление в то время как while floorNum <= curFloor:.Если вы уменьшите значение floorNum, это утверждение всегда будет верным.

...