如何获取小部件Python Tkinter的名称

时间:2014-11-26 20:03:33

标签: python tkinter widget

我正在开发一个程序,我在for循环中创建一些小部件。所以我需要动态地获取它们的名称。我设置的是当鼠标进入框架时。其中包含两个文本标签小部件。我导致一个函数运行。我想改变名称为noteName的小部件的背景颜色。但我似乎已陷入停顿点,我无法弄明白。我在网上搜索但找不到多少。那么这里的任何人都知道如何获取小部件的名称吗?

代码:

def get_children_hover(event):
        for widgets in event.widget.winfo_children():
            #This is here where I can not seem to figure out how to get the widgets name.

有人能把我推向正确的方向。

1 个答案:

答案 0 :(得分:1)

winfo_children()是正确的选择,但你错了。它是父窗口小部件的方法。 (即根,框架,帆布等..)

此外:

  

如果订单无关紧要,您可以从中获取相同的信息   children widget属性(它是映射Tk小部件名称的字典   到widget实例,所以widget.children.values()给你一个列表   实例)。

简单的例子:

import tkinter as tk

def foo():
    print ("Frame:", frm.winfo_children())
    print ("Root:", root.winfo_children())
    print ("children_values:", root.children.values())

root = tk.Tk()
frm = tk.Frame(root)
tk.Label(root,text="foo").pack()
btn = tk.Button(frm,text="FOOO",command=foo)
frm.pack()
btn.pack()

root.mainloop()

关于您的代码:

def get_children_hover(event):
    for widgets in root.winfo_children(): #assuming your Tk() instance named root