Innerhalb von KV-Dateien wird die Syntax "{}".format(object.property)
korrekt gebunden, die Syntax f"{object.property}"
jedoch nicht.
Im folgenden Beispiel:
format()
,f-string
.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()
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
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.