首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LCD显示器不想更新输入(不显示我告诉它要显示的内容)

LCD显示器不想更新输入(不显示我告诉它要显示的内容)
EN

Stack Overflow用户
提问于 2016-05-28 04:03:43
回答 1查看 169关注 0票数 0

我正在做非常基础的PyQt,所以请原谅糟糕的优化和缺乏面向类。

我正在试着用PyQt做一个计时器。我的UI上有3个液晶屏,一个小时液晶屏(hourLcd),一个分钟液晶屏(minuteLcd)和一个第二个液晶屏(secondLcd)

代码语言:javascript
复制
import sys
import time
from PyQt4 import QtGui
from PyQt4 import uic

app = QtGui.QApplication(sys.argv)
#window = QtGui.QMainWindow()

ui = uic.loadUi("clock.ui")

#ui.setupUi(Window)
ui.show()

这将设置PyQt4

代码语言:javascript
复制
def hourUp():
    count = ui.hourLcd.value()
    if count < 24:
        count = count + 1
    ui.hourLcd.display(count)

def hourDown():
    count = ui.hourLcd.value()
    if count > 0:
        count = count - 1
    ui.hourLcd.display(count)

def minuteUp():
    count = ui.minuteLcd.value()
    if count < 59:
        count = count + 1
    ui.minuteLcd.display(count)

def minuteDown():
    count = ui.minuteLcd.value()
    if count > 0:
        count = count - 1
    ui.minuteLcd.display(count)

def secondUp():
    count = ui.secondLcd.value()
    if count < 59:
        count = count + 1
    ui.secondLcd.display(count)

def secondDown():
    count = ui.secondLcd.value()
    if count > 0:
        count = count - 1
    ui.secondLcd.display(count)

这些是用于将UI按钮连接到操作的函数。例如,如果你按下UI上的向上按钮,它会给计数器加1

代码语言:javascript
复制
def start(stop):
    loop = False
    secondcounter = ui.secondLcd.value()
    minutecounter = ui.minuteLcd.value()
    hourcounter = ui.hourLcd.value()

    while loop == False:
        time.sleep(1)
        secondcounter = secondcounter - 1
        print(secondcounter)
        ui.secondLcd.display(secondcounter) ****

        if secondcounter == 0:
            if minutecounter != 0:
                minutecounter = minutecounter - 1
                print(minutecounter)
                ui.minuteLcd.display(minutecounter) ****
                secondcounter = secondcounter + 59
                ui.secondLcd.display(secondcounter) ****

        if secondcounter == 0:
            if minutecounter == 0:
                if hourcounter == 0:
                    loop = True

        if minutecounter == 0:
            if secondcounter == 0:
                if hourcounter != 0:
                    hourcounter = hourcounter - 1
                    print(hourcounter)
                    ui.hourLcd.display(hourcounter) ****
                    minutecounter = minutecounter + 59
                    print(minutecounter)
                    ui.minuteLcd.display(minutecounter) ****
                    secondcounter = secondcounter + 59
                    print(secondcounter)
                    ui.secondLcd.display(secondcounter) ****

        else:
            continue

使定时器工作的算法。

在basic中,所有的代码都能完美地工作。它从给定的任何时间开始倒数到0,但是我在将代码的打印输出链接到UI时遇到了问题,特别是在它们旁边有星号的行。我不明白为什么当计数器改变(例如counter = counter - 1 )时,代码会拒绝更新LCD数字,因为它在其他函数中工作。

谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2016-05-29 04:26:19

找到了解决方案。

代码语言:javascript
复制
 while loop == False:
    app.processEvents() #This was the line of code that I needed
    time.sleep(1)
    secondcounter = secondcounter - 1
    app.processEvents() #and this
    print(secondcounter)
    ui.secondLcd.display(secondcounter)

基本上,在调用ui之前添加app.processEvents()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37491456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档