Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überschreibe ich geerbte Bindungen in Tkinter-Text-Widgets?

Wie überschreibe ich geerbte Bindungen in Tkinter-Text-Widgets?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 20:55:02282Durchsuche

How to Override Inherited Bindings in Tkinter Text Widgets?

So überschreiben Sie geerbte Bindungen in Tkinter-Text-Widgets

Beim Binden von Ereignissen an ein Tkinter-Text-Widget können Sie auf Situationen stoßen, in denen Sie dies wünschen Eigene Ereignisbindungen haben Vorrang vor den integrierten Bindungen des Widgets. Beispielsweise möchten Sie möglicherweise den Text im Widget ändern, wenn Ihre Ereignisbindungsfunktion ausgelöst wird.

Standardmäßig tritt das Problem auf, weil Ihre Ereignisbindung vor den Klassenbindungen des Text-Widgets aufgerufen wird. die für das Einfügen von Benutzereingaben in das Widget verantwortlich sind.

Lösung: Bindungs-Tags bearbeiten

Um dieses Problem zu beheben, können wir die Reihenfolge ändern, in der Bindungen verarbeitet werden Bearbeiten der mit dem Widget verknüpften „Bindtags“. Bindtags sind Beschriftungen, die Widgets zugewiesen werden. Standardmäßig verfügt jedes Widget über einen Bindtag, der seinem Namen entspricht. Widgets haben auch andere Bindungstags, wie ihre Klasse, den Root-Fensterpfad und einen speziellen Tag namens „all“.

Wenn ein Ereignis empfangen wird, verarbeitet Tkinter Bindungen in der folgenden Reihenfolge, von der höchsten zur unspezifischsten : widget, class, toplevel, all.

Option 1: Bind-Tags neu anordnen

Eine Option zum Überschreiben geerbter Bindungen besteht darin, die Reihenfolge der Bind-Tags neu anzuordnen. Indem wir den Bindtag des Widgets nach dem Klassen-Bindtag verschieben, können wir sicherstellen, dass Klassenbindungen vor Widget-Bindungen behandelt werden.

Option 2: Einführung eines neuen Bind-Tags

Ein anderer Ansatz besteht darin, einen zusätzlichen Bindtag zu erstellen, der nach dem Klassen-Bindtag platziert wird. Indem wir Ereignisse an dieses neue Tag binden, können wir sicherstellen, dass unsere Bindungen nach Klassenbindungen ausgeführt werden.

Vorteile der Verwendung eines neuen Bind-Tags

Das Neuanordnen von Bindtags kann sich auf alle auswirken Bindungen im Widget, die möglicherweise diejenigen beeinträchtigen, die auf einer bestimmten Reihenfolge basieren. Durch die Einführung eines neuen Bindtags können Sie überschriebene Bindungen selektiv nach den Klassenbindungen anwenden, sodass andere Bindungen davon nicht betroffen sind.

Beispiel

Der bereitgestellte Python-Code demonstriert die drei verschiedenen Bindtags oben genannten Konfigurationen. Wenn Sie mit den Eintrags-Widgets interagieren und Tasten drücken, werden Sie feststellen, dass die Statusbezeichnung für jedes Widget anders aktualisiert wird:

  • Im ersten Widget (Eintrag1) liegt die Bindung immer ein Zeichen dahinter, weil Die Widget-Bindung erfolgt vor der Klassenbindung.
  • Im zweiten Widget (Eintrag2) erfolgt die Bindung nach der Klassenbindung, sodass die Funktion die Änderung im Widget erkennt.
  • Im dritten Widget (Eintrag3) verwenden wir einen neu eingeführten Bindtag, um die Klassenbindungen zu überschreiben.

Das obige ist der detaillierte Inhalt vonWie überschreibe ich geerbte Bindungen in Tkinter-Text-Widgets?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn