我对Python很陌生,我制作了一个非常简单的倒计时。图形用户界面是在Qt设计器中创建的。有一个用于输入秒数的数字显示框、一个启动按钮和一个液晶数字计数器。计数器使用以下代码进行精细倒计时:
def start_btn_clicked(self):
x = self.Minute_spinBox.value()
for i in xrange(x,0,-1):
time.sleep(1)
print (i)
为了让我能够看到在使用它时发生了什么,我添加了print指令,以便它在运行时在Python控制台中显示倒计时。然后我想我可以很容易地让液晶数字显示倒计时,比如:
self.lcdNumber.display(i)("%SS")
但不管我怎么努力,我都无法让它展现出来。上面这一行显示了第一个数字,但随后出现一个错误,说:
self.lcdNumber.display(i)("%SS")
TypeError: 'NoneType' object is not callable
我已经尝试了太多的变化,我不再知道我从哪里开始,这里是我认为这将是简单的。我想知道为什么我不能让它显示倒计时。
只需在我的原始代码中添加一行代码,lcdNumber就可以显示计数。。。
工作完美
display
函数返回None
,因此显然不允许执行None("%SS")
。self.lcdNumber.display(i)
足以显示倒计时!让Qt在循环时绘制小部件,从另一个线程运行倒计时。看一个例子。
for
循环正在阻塞GUI。连接到按钮的
clicked
信号的插槽被同步处理。这意味着事件循环必须等待插槽返回,然后才能处理更多事件(包括更新GUI所需的paint events)。因此,您需要在运行
for
循环时找到处理这些事件的方法。有多种方法可以做到这一点,例如使用QTimer或QThread。但修复特定示例的最简单方法是使用QCoreApplication.processEvents。下面是一个示例,演示如何执行此操作:
相关问题 更多 >
编程相关推荐