我正在做非常基础的PyQt,所以请原谅糟糕的优化和缺乏面向类。
我正在试着用PyQt做一个计时器。我的UI上有3个液晶屏,一个小时液晶屏(hourLcd),一个分钟液晶屏(minuteLcd)和一个第二个液晶屏(secondLcd)
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
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
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数字,因为它在其他函数中工作。
谢谢!!
发布于 2016-05-29 04:26:19
找到了解决方案。
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()
https://stackoverflow.com/questions/37491456
复制相似问题