Kivy: バインドされていないf-string内のプロパティ

作成日 2019年05月11日  ·  3コメント  ·  ソース: kivy/kivy

バージョン

  • Python:3.7.3
  • OS:ArchLinux(カーネル5.0.11)
  • Kivy:1.10.1
  • Kivyのインストール方法:詩(pip)

説明

KVファイル内では、構文"{}".format(object.property)は正しくバインドされますが、構文f"{object.property}"はバインドされません。

以下の例では:

  • 最初のラベルは単なる生のバインディングであり、
  • 2番目のラベルはformat()関数を使用します。
  • 3番目のラベルは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()

image

Feature

最も参考になるコメント

ざっと見てみると、python astにはf文字列用の新しいノード( FormattedValueと呼ばれます)があります。 これは、astパーサーを使用して実装できるはずであることを意味します。

将来時間があれば、kvコンパイラブランチを更新してPython構文を削除し、代わりに従来のkv構文のみを使用して、それをkivyに取り入れようと計画しています。 次に、ast解析ステップでこれのサポートを簡単に追加できるはずです。

全てのコメント3件

ざっと見てみると、python astにはf文字列用の新しいノード( FormattedValueと呼ばれます)があります。 これは、astパーサーを使用して実装できるはずであることを意味します。

将来時間があれば、kvコンパイラブランチを更新してPython構文を削除し、代わりに従来のkv構文のみを使用して、それをkivyに取り入れようと計画しています。 次に、ast解析ステップでこれのサポートを簡単に追加できるはずです。

#6108の重複?

#6108の複製として閉じる

このページは役に立ちましたか?
0 / 5 - 0 評価