Kivy: f-string 中的属性未绑定

创建于 2019-05-11  ·  3评论  ·  资料来源: kivy/kivy

版本

  • 蟒蛇:3.7.3
  • 操作系统:ArchLinux(内核 5.0.11)
  • 基维:1.10.1
  • Kivy 安装方式: Poetry (pip)

描述

在 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()

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 等级