に非常に似ています
print("focus object class:", window2.focus_get().__class__)
ここから取得:Pythonはフォーカスされたエントリ名を取得しますが、オブジェクトの正確な名前が必要です。次のようなもの:self.entrywidget_1
または:
本当の場合、プレースホルダーに何を入力して作成しますか?
print(self.focus_get().__class__)
if self.focus_get().__class__ == "placeholder":
print("I work")
最初の印刷は<class'tkinter.Entry '>を返します
できません。任意のオブジェクトには多くの名前を付けることができます。たとえば、次のコードが与えられた場合、どの名前を取得すると思いますか?
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")
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加