Rück-Bindung "alle auswählen" im Text-widget
Arbeite ich mit dem Text-widget, und ich habe eine Frage zu old-school-Verknüpfungen, Tk verwendet.
Ie:
Alles auswählen: Ctrl + /
vs Ctrl + a
Schnitt: Ctrl + w
vs Ctrl + x
Kopie: Meta + w
vs Ctrl + c
Einfügen: Ctrl + y
vs Ctrl + v
Auf Windows, alle von Ihnen arbeiten, außer Sie Strg+a,.
1) Ist es möglich eine Umleitung bindet, so .bind('<Control-a>')
Anrufe bereits gebunden Strg + /?
2) ich habe versucht, für "alle auswählen":
txt_text.bind('<Control-a>', self.ctext_selectall)
Wo:
def ctext_selectall(self, callback):
"""Select all text in the text widget"""
self.txt_text.tag_add('sel', '1.0', 'end')
Aber es funktioniert nicht, da Strg+a funktioniert standardmäßig (cursor geht an den start). Es funktioniert mit einigen anderen, ungebundenen Brief. Chancen dieser Arbeit, wenn die Lösung unter 1 ist nicht möglich?
InformationsquelleAutor marw | 2011-05-03
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Standard-Bindungen angewendet werden, um die widget-Klasse. Wenn Sie tun, eine Bindung, die es betrifft ein bestimmtes widget und, dass die Bindung erfolgt vor der Klasse verbindlich. Was ist also passiert, ist, dass Ihre Bindung geschieht, und dann die Klasse verbindlich ist passiert, das macht es scheinen, als ob Eure Bindung nicht funktioniert.
Gibt es zwei Möglichkeiten, um dieses Problem zu lösen. Man, Ihr
ctext_selectall
können den string "Pause", die verhindern, dass die Klasse die Bindung von feuern. Das sollte gut genug sein, um der Lösung Ihres Problems.Die zweite Lösung umfasst das ändern der Klasse bindend, so dass Sie Ihre bevorzugte Bindung gilt für alle text-widgets. Würden Sie dies tun, indem Sie die
bind_class
Methode.Hier ist ein Beispiel für die neubindung der Klasse:
effbot.org hat eine ziemlich anständige Dokument mit dem Titel Ereignisse und Bindungen. Es geht ein bisschen mehr ins detail über die Klassen-und widget-Bindungen und die Reihenfolge, in der Sie auftreten.
Tk-Bindungs-Mechanismus geht es um das beste von jedem GUI-toolkit, die es gibt. Wenn Sie verstehen, wie es funktioniert (und es ist bemerkenswert einfach) Sie werden feststellen, es ist einfach zu erweitern oder zu ersetzen, eine oder alle der Standard-Bindungen.
Fühlen Sie sich frei, verwenden Sie den folgenden code, oder zumindest überprüfen, wie sich die
select_all
Methoden implementiert, in derDiacriticalEntry
undDiacriticalText
Klassen. Wenn Sie wählen, um die Klassen wie Sie sind, was das widget, das Sie momentan verwenden, werden Sie auch gewinnen, die advantange, dass Benutzer in der Lage sein, um leicht Typ in bestimmte Zeichen, die sonst schwieriger zu geben.select_all
Methoden zu schreiben, seine eigenen."<Control-Key-x><Key>"
um meine Aufmerksamkeit. 😀