KVファイル内では、構文"{}".format(object.property)
は正しくバインドされますが、構文f"{object.property}"
はバインドされません。
以下の例では:
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()
ざっと見てみると、python astにはf文字列用の新しいノード( FormattedValue
と呼ばれます)があります。 これは、astパーサーを使用して実装できるはずであることを意味します。
将来時間があれば、kvコンパイラブランチを更新してPython構文を削除し、代わりに従来のkv構文のみを使用して、それをkivyに取り入れようと計画しています。 次に、ast解析ステップでこれのサポートを簡単に追加できるはずです。
#6108の重複?
#6108の複製として閉じる
最も参考になるコメント
ざっと見てみると、python astにはf文字列用の新しいノード(
FormattedValue
と呼ばれます)があります。 これは、astパーサーを使用して実装できるはずであることを意味します。将来時間があれば、kvコンパイラブランチを更新してPython構文を削除し、代わりに従来のkv構文のみを使用して、それをkivyに取り入れようと計画しています。 次に、ast解析ステップでこれのサポートを簡単に追加できるはずです。