How do you find a unique and constant ID of a widget?
注意,按小部件,这不包括画布项(不是小部件)。
我的目标是构建两个类:一个类生成画布小部件的项,另一个类自己生成小部件。这是为了确保我可以在窗口中移动东西,并在重新打开时将其保留在那里。我已经为画布项目做了这个。你看,CanvasWidgets实际上返回了一个实际的ID,对于受尊重的项保持不变,因此我可以引用它和它的坐标。
然而,对于小部件本身,似乎没有这样的方法来获取ID。我尝试过
我还尝试将所说的小部件放在父窗口中,比如窗口或框架,但是这些小部件本身不会为各自的子小部件分配任何唯一的值。
所以基本上,我可以得到任何给定的小部件的唯一值,但是没有一个是常量。顺便说一下,这可以是任何值,因为我将把它转换成一个字符串,将它附加到dict,并将coords分配给所述str以引用特定的小部件。
感谢您的指导,非常感谢:)
您无法获得唯一的常量ID,但可以为小部件提供唯一的常量ID。
在发动机罩下,tkinter使用tk。在tk中,每个小部件都有一个名称,并以点表示法表示的层次结构存在。在tk中,创建小部件时必须定义一个名称;这是tkinter为您做的事情。当您看到一个小部件名如".1234567890.0987654F321"时,这意味着父部件的内部名称为".1234567890",小部件名为"0987654321"。
您可以使用
例如:
1 2 3 4 5 6 7 8 9 10 | >>> import Tkinter as tk >>> root = tk.Tk() >>> f = tk.Frame(root, name="foo") >>> b1 = tk.Button(f, name="b1") >>> str(b1) '.foo.b1' >>> root.nametowidget(".foo.b1") <Tkinter.Button instance at 0x100795488> >>> b1 <Tkinter.Button instance at 0x100795488> |