Dans les fichiers KV, la syntaxe "{}".format(object.property)
se lie correctement, mais pas la syntaxe f"{object.property}"
.
Dans l'exemple ci-dessous :
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()
J'ai jeté un coup d'œil rapide et python ast a un nouveau nœud pour les f-strings (appelé FormattedValue
). Cela signifie que nous devrions pouvoir implémenter en utilisant l'analyseur ast.
Si j'ai le temps à l'avenir, je prévois de mettre à jour la branche du compilateur kv pour supprimer la syntaxe python et ne m'en tenir qu'à la syntaxe kv traditionnelle et essayer de l'intégrer à kivy. Ensuite, il devrait être facile d'ajouter un support pour cela dans la dernière étape d'analyse.
Double de #6108 ?
fermeture en double de # 6108
Commentaire le plus utile
J'ai jeté un coup d'œil rapide et python ast a un nouveau nœud pour les f-strings (appelé
FormattedValue
). Cela signifie que nous devrions pouvoir implémenter en utilisant l'analyseur ast.Si j'ai le temps à l'avenir, je prévois de mettre à jour la branche du compilateur kv pour supprimer la syntaxe python et ne m'en tenir qu'à la syntaxe kv traditionnelle et essayer de l'intégrer à kivy. Ensuite, il devrait être facile d'ajouter un support pour cela dans la dernière étape d'analyse.