反复将Tkinter窗口颜色更改为生成的颜色

时间:2017-09-27 20:03:45

标签: python tkinter colors

我有Python代码生成屏幕的平均颜色为RGB值十六进制代码。代码通过while True循环重复自身,我想在此循环结束时将指令更改为窗口颜色。

我现在有这个代码:

from Tkinter import *
from colour import Color

root = Tk()
root.configure(background="grey")
root.geometry("400x400")
root.mainloop()
while True:
    [ COLOUR GENERATING SCRIPT ]
    hexcolour = Color(rgb=(red, green, blue))
    root.configure(background=hexcolour)

有人可以告诉我如何启动Tkinter窗口然后在每次循环运行时更改颜色吗?

我为这个项目运行Python 2.7。

1 个答案:

答案 0 :(得分:2)

您需要完全删除while循环。相反,创建一个在循环中将要执行的函数,然后让该函数通过after调用自身。然后它会在程序的生命周期内运行。

from Tkinter import *
from colour import Color

def changeColor():
    [ COLOUR GENERATING SCRIPT ]
    hexcolour = Color(rgb=(red, green, blue))
    root.configure(background=hexcolour)

    # call this function again in one second
    root.after(1000, changeColor)

root = Tk()
root.configure(background="grey")
root.geometry("400x400")

# call it once, it will run forever
changeColor()

root.mainloop()