如何将变量传递给kivy小部件属性?

时间:2019-01-28 15:55:53

标签: python kivy

我知道这是一个常见问题,关于此主题有几个答案,但是没有一个答案对我有用,所以在这里:

我正在尝试在Container(BoxLayout)类下的main.py中定义字体大小,然后在.kv文件中使用该值动态驱动字体大小。

我还有另一个使用字符串属性来处理文本的示例,它可以工作,但是在数字或对象属性方面却没有。

代码如下:

main.py

from kivy.app import App

from kivy.uix.boxlayout import BoxLayout

from kivy.properties import StringProperty, NumericProperty, ObjectProperty

class Container(BoxLayout):
    user_name = StringProperty('Mad Max')
    y = ObjectProperty('100dp')

class MainApp(App):
    def build(self):
        return Container()

if __name__ == "__main__":
    MainApp().run()

main.kv

<Container>:
    Label:
        text: root.user_name
        font_size: root.y

因为这已经适用于字符串文件,所以我不知道该怎么办!

谢谢您的回答!

再见

1 个答案:

答案 0 :(得分:1)

这就是问题所在:

我不应该使用像“ y”这样的变量名。正如 John Anderson 所指出的,使用“ x”或“ y”作为变量名的名称与Widget冲突,因为这些名称用于定位。

因此,代码应为变量使用更好的名称,例如:

main.py

font_size: root.title_size

main.kv

 $("#btn").click(function() {
        $.ajax({
          url:"",
          method: "get",
          async: true,
          DataType: "application/json"
        })
        .then(function(data) {
         document.getElementById("test").innerHTML = data
            .map(function(f) {
              console.log(f);
              return "<p>" + f.DocImage.sfFilename + "</p>";
            })
            .join("<br/>");
        });
    });

因此,请勿使用“ x”或“ y”作为变量名!

谢谢

  

约翰·安德森

并希望这对其他人有帮助。

再见