Tab / Enter (und andere Tastatureingaben) in Kivys TextInput-Widgets

8

Ich schreibe eine App mit dem Kivy-Framework und stolperte über ein kleines, aber lästiges Problem: Ich weiß nicht, wie man Tasten Tab / Enter / Pfeil in Textfeldern bedient, so dass man entweder drückt von ihnen würde ein Ereignis, z. wechseln Sie den Fokus (Sprung) zu einem anderen TextInput oder starten Sie etwas wie send_form()

Könnte jemand bitte etwas Licht in dieses Thema bringen?

    
minder 20.08.2012, 12:09
quelle

3 Antworten

3

Wie von Daniel Kinsman in seinem Kommentar vorgeschlagen, könnten Sie TextInput ableiten, "vorherige" und "nächste" ObjectProperties für die Tab-Unterstützung hinzufügen (einfach in kv mit Verweisen auf andere Widgets setzen) und die Tastaturereignisse anders handhaben. Momentan gibt es dafür keine Unterstützung, aber wenn Sie an einer solchen Modifikation arbeiten möchten, lassen Sie uns eine Feature-Anfrage zukommen oder besprechen Sie sie in #kivy auf freenode.

Ссылка

Vielleicht wäre es sogar besser, eine solche Unterstützung für ein Widget hinzuzufügen und eine Fokuslogik hinzuzufügen, so dass Tab / Enter-Effekte Auswirkungen auf jedes aktivierbare Widget haben und einige Widgets wie der Slider auch die Tasten rechts / links / hoch / runter verwenden / p>

Es gibt also noch eine Menge zu tun in Kivy, und wenn Sie daran interessiert sind zu helfen, können Sie es wirklich schneller machen, wir werden Ihnen helfen:)

    
Tshirtman 25.08.2012, 20:19
quelle
15

Kivy 1.9 bietet die Möglichkeit, write_tab: False für Texteingaben festzulegen ( siehe Dokumentation ), was dazu führt, dass sich die Tabulatortaste auf das nächste fokussierbare Widget konzentriert.

Kivy erlaubt es der Eingabetaste, Ereignisse zu senden, indem multiline: False und on_text_validate: root.foo() festgelegt werden.

Um ein Texteingabe-Widget mit der gewünschten Eingabe- und Tab-Funktionalität zu erstellen, gehen Sie wie folgt vor:

%Vor%     
mcastle 21.02.2015 23:07
quelle
7

Ich habe gerade diese alte Frage gefunden und dachte, ich würde dazu beitragen. Ich brauchte auch Tab / Enter, um zum nächsten Feld zu gehen. Ich habe getan, was @tshirtman vorgeschlagen hat. Dies ist meine benutzerdefinierte TextInput -Klasse:

%Vor%

Damit können Sie next übergeben, wenn Sie die Eingabe instanziieren, oder alternativ set_next für eine vorhandene Eingabe aufrufen.

9 und 13 sind die Tastencodes für Tab und Enter.

Funktioniert gut für mich.

    
dgel 20.06.2013 17:08
quelle

Tags und Links