gpt4 book ai didi

python-3.x - 如何获取焦点小部件的对象名称?

转载 作者:行者123 更新时间:2023-12-02 04:19:13 24 4
gpt4 key购买 nike

非常相似

print("focus object class:", window2.focus_get().__class__) 

取自这里: Python get focused entry name,但我需要对象的确切名称。类似于:self.entrywidget_1

或者:

如果为真,要填充占位符做什么?

print(self.focus_get().__class__)
if self.focus_get().__class__ == "placeholder":
print("I work")

第一次打印返回

最佳答案

你不能。任何给定的对象都可以有多个名称。例如,给定以下代码,您希望获得哪个名称?

self.foo = tk.Button(...)
self.bar = self.foo

您很少(如果有的话)需要小部件的名称。您所需要的就是对小部件的引用(如 focus_get() 返回的那样)。这样你就可以插入数据、删除数据、销毁小部件、获取小部件内容等。

如果您确实需要一些可预测的、唯一的标识符(在同一函数必须适用于多个小部件的情况下),您可以为每个小部件提供一个作为符号名称的自定义属性。然后您可以在运行时获取该名称。例如:

e = tk.Entry(...)
e.name = "placeholder"
...
focused_widget = root.focus_get()
print (the name of the focused widget is %s" % focused_widget.name)

同样,您可能永远不需要它。例如,如果您想删除焦点小部件中的文本,只需使用对该小部件的引用:

focused_widget.delete(0, "end")

如果您真正需要的是检查聚焦的小部件是否是特定的小部件,只需进行直接比较即可:

...
self.placeholder = tk.Entry(...)
...
def whatever(self):
focused_widget = root.focus_get()
if focused_widget == self.placeholder:
print("I work")

关于python-3.x - 如何获取焦点小部件的对象名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31727075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com