繁体   English   中英

如何在tkinter中连续更改背景颜色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM