我试图通过以下方式改变标签小部件的颜色来模拟其闪烁:
a)更改为颜色#1,暂停1秒
b)更改为颜色#2,暂停1秒
c)使用tk.after
再次循环以重新运行此过程。在
但结果是颜色不变。在
self.blink_status
是一个表示通信状态正常的索引,它等于1
。当然,代码是用常量值self.blink_status=1
进行测试的
def blink_tx(self):
if self.blink_status == 1:
self.tx_label["bg"] = 'green'
self.tx_value.set('Tx')
sleep(1)
self.tx_label["bg"] = 'blue'
sleep(1)
elif self.blink_status == 0:
self.tx_label["bg"] = 'red'
self.tx_value.set('*')
sleep(2)
self.tx_label["bg"] = 'orange'
else:
self.tx_label["bg"] = 'red'
self.tx_value.set('x')
sleep(2)
self.status_frame.after(3500, self.blink_tx)
self.tx_label
和{
不能在tkinter实例内部使用
sleep()
。Tkinter是一个单线程应用程序,当您告诉它休眠时,事件列表中的所有内容都将被挂起/冻结。对于代码中的任何延迟,都需要使用after()
。{t2>方法中的延迟是用来管理的。在因为在你的例子中,你运行了两个独立的延迟,我的例子将提供两个延迟。在
下面是一个由您提供的代码组成的示例。 我们可以设置我们需要购买的所有延迟提供第二个功能。我在代码中添加了一个随机数生成器来演示颜色的连续变化。在
time.sleep()
正在阻止您的GUI更新;请不要将其与GUI一起使用。请改用root.after
。在单击GUI时,以下标签将开始闪烁:
您可以将其修改为您自己未提供的代码。在
感谢@Mike SMT和@Reblochon Masque的帮助。TNX大量
我的代码修复:
相关问题 更多 >
编程相关推荐