【问题标题】:Flashing Tkinter Labels闪烁的 Tkinter 标签
【发布时间】:2014-02-20 13:04:31
【问题描述】:

我是一名 Python 初学者,最近开始使用 tkinter,但遇到了一个我无法解决的问题。

基本上我有两个输入框。

  • Entry1 = 消息
  • 条目 2 = 没有。闪光次数

(这只是我需要的一个例子。)

我只需要一个 for 循环来弹出标签并闪烁 entry1entry2 一样多次,是的,我知道如何获取输入,但我不知道如何让标签连续flash,我已经在循环中尝试了pack_forget.destroy 标签的方法,但不幸的是它没有显示,因为它几乎立即再次从屏幕上清除。

【问题讨论】:

  • 实现“flash”是什么意思?背景颜色?对象快速增长和收缩?要消失的对象?

标签: python tkinter label


【解决方案1】:

基本思想是创建一个执行flash(或flash的一半)的函数,然后使用after重复调用该函数,直到您希望flash发生为止。

这是一个切换背景色和前景色的示例。它永远运行,只是因为我想保持示例简短。您可以轻松添加计数器、停止按钮或其他任何您想要的东西。摆脱这一点的概念是拥有一个执行一帧动画的函数(在本例中,切换颜色),然后安排自己在一段时间后再次运行。

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        self.label = tk.Label(self, text="Hello, world", 
                              background="black", foreground="white")
        self.label.pack(side="top", fill="both", expand=True)
        self.flash()

    def flash(self):
        bg = self.label.cget("background")
        fg = self.label.cget("foreground")
        self.label.configure(background=fg, foreground=bg)
        self.after(250, self.flash)

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()

【讨论】:

  • 使用样式怎么样?您是每半秒切换一次标签的样式还是有更好的方法?
猜你喜欢
  • 2011-04-18
  • 2013-09-17
  • 2013-07-08
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多