[英]how to continuously change background color in tkinter
Python初学者在这里。
我需要一种在Python中显示颜色序列的方法,而我选择使用Tkinter来实现。
我设法拥有一个Button,并使其在单击时更改了背景颜色,但是当我进行多次更改时,仅呈现最后一个。
我几乎可以肯定,这不是Tkinter本身的问题,而是Python本身处理函数的方式,因此这可能已经在此处进行了讨论,但是作为一个初学者,我真的不知道要寻找什么。 我猜正确的关键字就足够了。
from Tkinter import *
import time
class App:
def __init__(self, master):
self.slogan = Button(command=self.change)
self.slogan.pack()
def change(self):
self.slogan.configure(bg = 'red')
time.sleep(1)
self.slogan.configure(bg = 'blue')
root = Tk()
app = App(root)
root.mainloop()
该代码应该在单击时将颜色更改为红色,然后将其更改为蓝色,而是仅将颜色更改为蓝色。
这是您的问题:
time.sleep(1)
切勿在GUI程序中入睡。 它使mainloop停止执行任何操作(即更新图形)。 它将冻结gui,并且一秒钟也没有响应。
取而代之的是,将其分为两个回调,并让第一个安排后跟一个回调:
def change(self):
self.slogan.configure(bg='red')
self.slogan.after(1000, # milliseconds
self.change_back)
def change_back(self):
self.slogan.configure(bg='blue')
另外,您的应用程序可能应该将母版传递给按钮( Button(master, command=self.change)
)和/或应从Tkinter.Frame继承而来,然后将按钮包装在其中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.