在 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 解析步骤中添加对此的支持应该很容易。