Joz*_*éry 2 tkinter python-3.x
非常类似于
print("focus object class:", window2.focus_get().__class__)
Run Code Online (Sandbox Code Playgroud)
取自此处: Python get focusedentry name ,但我需要对象的确切名称。类似于: self.entrywidget_1
或者:
如果为真,要填充占位符做什么?
print(self.focus_get().__class__)
if self.focus_get().__class__ == "placeholder":
print("I work")
Run Code Online (Sandbox Code Playgroud)
第一个打印返回 < class 'tkinter.Entry' >
你不能。任何给定的对象都可以有多个名称。例如,给定以下代码,您希望获得哪个名称?
self.foo = tk.Button(...)
self.bar = self.foo
Run Code Online (Sandbox Code Playgroud)
您很少(如果有的话)需要小部件的名称。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)
Run Code Online (Sandbox Code Playgroud)
同样,您可能永远不需要它。例如,如果您想删除焦点小部件中的文本,只需使用对该小部件的引用:
focused_widget.delete(0, "end")
Run Code Online (Sandbox Code Playgroud)
如果您真正需要的是检查聚焦的小部件是否是特定的小部件,只需进行直接比较:
...
self.placeholder = tk.Entry(...)
...
def whatever(self):
focused_widget = root.focus_get()
if focused_widget == self.placeholder:
print("I work")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3117 次 |
| 最近记录: |