【问题标题】:how to continuously change background color in tkinter如何在 tkinter 中不断更改背景颜色
【发布时间】:2016-10-23 14:51:05
【问题描述】:

这里是 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()

此代码应该在单击时将颜色更改为红色,等待并将颜色更改为蓝色,而不是将颜色更改为蓝色。

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    这是你的问题:

    time.sleep(1)
    

    永远不要在 GUI 程序中休眠。它阻止主循环做任何事情(即更新你的图形)。它会冻结 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 子类化,然后将按钮封装在其中。

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 2017-10-16
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2021-01-12
      • 2021-06-27
      • 2020-02-10
      • 2021-03-22
      相关资源
      最近更新 更多