Kivy: Eigenschaften innerhalb des f-Strings nicht gebunden

Erstellt am 11. Mai 2019  ·  3Kommentare  ·  Quelle: kivy/kivy

Versionen

  • Python: 3.7.3
  • Betriebssystem: ArchLinux (Kernel 5.0.11)
  • Kyvy: 1.10.1
  • Kivy-Installationsmethode: Poesie (Pip)

Beschreibung

Innerhalb von KV-Dateien wird die Syntax "{}".format(object.property) korrekt gebunden, die Syntax f"{object.property}" jedoch nicht.

Im folgenden Beispiel:

  • das erste Etikett ist nur eine Rohbindung,
  • das zweite Label verwendet die Funktion format() ,
  • das dritte Etikett verwendet ein f-string .

Code und Protokolle

from kivy.app import App
from kivy.lang import Builder

kv = r"""
BoxLayout:
    orientation: 'vertical'

    TextInput:
        id: text_input
        text: "foo"
    Label:
        text: text_input.text
    Label:
        text: "text input value using `format()`: {}".format(text_input.text)
    Label:
        text: f"text input value using f-string: {text_input.text}"

"""
class SandboxApp(App):
    def build(self):
        return Builder.load_string(kv)

def main():
    SandboxApp().run()

if __name__ == '__main__':
    main()

image

Feature

Hilfreichster Kommentar

Ich habe einen kurzen Blick darauf geworfen und python ast hat einen neuen Knoten für F-Strings (namens FormattedValue ). Dies bedeutet, dass wir in der Lage sein sollten, den ast-Parser zu implementieren.

Wenn ich in Zukunft Zeit habe, plane ich, den kv-Compiler-Zweig zu aktualisieren, um die Python-Syntax fallen zu lassen und stattdessen nur bei der traditionellen kv-Syntax zu bleiben und zu versuchen, das in kivy zu bringen. Dann sollte es einfach sein, dies im letzten Parsing-Schritt zu unterstützen.

Alle 3 Kommentare

Ich habe einen kurzen Blick darauf geworfen und python ast hat einen neuen Knoten für F-Strings (namens FormattedValue ). Dies bedeutet, dass wir in der Lage sein sollten, den ast-Parser zu implementieren.

Wenn ich in Zukunft Zeit habe, plane ich, den kv-Compiler-Zweig zu aktualisieren, um die Python-Syntax fallen zu lassen und stattdessen nur bei der traditionellen kv-Syntax zu bleiben und zu versuchen, das in kivy zu bringen. Dann sollte es einfach sein, dies im letzten Parsing-Schritt zu unterstützen.

Duplikat von #6108?

Schließen als Duplikat von #6108

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen