python - tkinter:标记任意小部件以进行检索的最佳方法

标签 python tkinter tk-toolkit

在基于现有的小部件构建我自己的小部件时,我一直在为我的每个小部件类添加一个“名称”字段,以便以后更容易访问,例如:

class MyFrame(tk.Frame):
    def __init__(self, master, name, *args, *kwargs):
        super().__init__(master, *args, *kwargs)
        self.name = name

设置整个窗口布局后,我可以执行以下操作:

mywidget = allWidgets['myWidgetName']

但我忍不住想知道是否有更好的方法,使用小部件的内置属性,而不添加新标签。我知道 winfo_children() 有助于遍历小部件树,但我确实需要随机访问。

最佳答案

根据@BryanOakley的提示,我终于发现所有Tkinter小部件都有一个._name属性,默认值为!<classname> ,即使类名使用大小写混合,也全部小写。

然后我可以将任何名称分配给 ._name实例化我的小部件类后。 可以理解的是,这个细节不在官方文档中,因为这不是公共(public)界面的一部分,但知道这一点立即为我自己的工作节省了内存。

但是,我想如果我开始使用它,维护小部件名称的唯一性将是我自己的责任。

谈到 Tkinter 时,我必须感谢 Bryan 一百万,感谢他的足智多谋。

关于python - tkinter:标记任意小部件以进行检索的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53927636/

相关文章:

python - 如何在 Django 中设置我自己的时区?

python - 互斥的装置?

python - 如何用键盘激活 tkinter 按钮?

python - 在 while 循环中更改 tkinter Canvas 中的图像

Python Tkinter Tk/Tcl 使用问题

python - 从 numpy 中高斯正态多元分布的某些概率中得出

python - 如何将 numpy 数组附加到 pandas 数据框

perl - 尝试在 Windows 7 上安装 MinGW 和 Tk for Perl

python - 通过 Tk 小部件/窗口路径名访问小部件

python - 桌面外的 Tkinter 窗口