【发布时间】:2015-07-12 07:49:43
【问题描述】:
请注意,通过小部件,这不包括画布项目(不是小部件)。
我的目标是构建两个类:一个生成画布小部件的项目,另一个生成小部件本身。这是为了确保我可以在窗口中移动东西并在重新打开时将其保留在那里。我已经为画布项目做了这个。您会看到,画布小部件实际上返回了一个实际 ID,该 ID 对于受尊重的项目保持不变,因此我可以引用它并且它是坐标。
但是,对于小部件本身,似乎没有这种获取 ID 的方法。我尝试过widget.getint()、widget.getvar() 等。我也尝试过repr(widget) 和id(widget),但是两个这些值在重新打开时都会发生变化,我认为创建了新的小部件,其中变量只是指与刚刚销毁的小部件相比新创建的小部件,即使它具有相同的属性。
我也尝试将上述小部件放在父窗口中,例如窗口或框架,但这些小部件本身不会为它们各自的子小部件分配任何唯一值。
所以基本上,我可以获得任何给定小部件的唯一值,但没有一个是恒定的。顺便说一句,这可以通过 any 值,因为我只需将其转换为字符串,将其附加到 dict,然后将坐标分配给所述 str 以引用特定的小部件。
提前感谢您的任何指导,非常感谢:)
【问题讨论】:
-
repr(widget)返回小部件的字符串表示形式。id(widget)基本上返回一个数字,表示对象在内存中的地址。请注意,id(widget)在同一应用程序实例期间始终返回相同的数字。它可能会在应用程序的不同实例中为“相同”对象返回不同的数字。 -
应用程序实例我的意思是当你运行你的应用程序时,这是一个实例,当你再次运行它时,这是另一个实例,等等。
标签: python user-interface python-3.x tkinter widget