【问题标题】:kivy: How do I update an objects property?kivy:如何更新对象属性?
【发布时间】:2016-08-08 09:06:22
【问题描述】:

我有一个 python 脚本和一个 kivy 文件来构建界面。

我想通过pythons输入(网络输入)动态更新标签内的Text。

所以我为主要的 kivy 小部件创建了一个属性:

class UserForm(BoxLayout):
    txt = StringProperty("")

在 kivy 内部,我使用 on_txt 调用以下小部件内部的一些更改:

<UserForm>:
    orientation: 'vertical'
    name: name_input.text
    barcode: barcode_input.text
    on_txt: print ("Aha"); barcode_label.text = "I CHANGED FOR THE BETTER"
    Label:
        id: barcode_label
        text: "barcode (EAN or SN):"
        font_size: 30

它会打印“Aha”并且不会抛出任何错误,但它也不会更改标签的文本。

感谢任何帮助或提示!

【问题讨论】:

    标签: python oop kivy kivy-language


    【解决方案1】:

    在 python 中执行此操作

    class UserForm(Screen):
      on_enter(self):
        self.barcode_label.text='I CHANGED FOR THE BETTER'
    

    这将在您每次进入屏幕时将代码更改为此 选择 如果你想要别的东西试试这个

    class UserForm(Screen):
        def changetext(self):
            self.barcode_label.text='I CHANGED FOR THE BETTER'
    

    在你的 kv 文件中这样做

    <UserForm>:
        orientation: 'vertical'
        name: name_input.text
        barcode: barcode_input.text
        barcode_label:barcode_label
        Label:
            id: barcode_label
            text: "barcode (EAN or SN):"
            font_size: 30
        Button:
            text: 'press me'
            pos_hint:{"center_x":0.5,"center_y":0.3}
            size_hint:(0.1,0.1)
            on_press:root.changetext()
    

    这给了你一个按钮来改变文本 如果您有任何错误,请告诉我

    【讨论】:

    • 谢谢!第二个是我要找的。第一个似乎更有吸引力,但快速测试没有达到我想要的效果(停留在 kivy 语言定义的文本上)。
    • 但跟进:我如何从 python 调用 changetext() 方法并仍然获得相同的更新?例如当我有另一个线程在等待网络信号的服务器上运行时,或者如果 python 在将输入传递回 kivy 小部件之前处理输入...
    • 我认为你不能在这个类之外调用这个函数。但是准确地解释你想要发生的事情,我会尽力帮助你,如果你想刷新屏幕我可以帮你什么吗?你能解释一下你的程序吗,这样我就知道你需要做什么了
    • 非常感谢!我想你是对的:我的问题在于定期更新屏幕。我的程序执行以下操作: 1)python 打开一个 OSC 服务器并监听端口上的输入 2)它使用 kivy 构建一个用户界面,用户可以在其中输入一些通过网络发送的数据(到目前为止有效) 3)当来自另一台计算机的数据到达网络端口时,我正在监听的脚本(在主 kivy 循环之外),我希望网络输入的事件监听器将传入数据传递到 kivy 以显示它在那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2012-03-16
    • 2016-07-13
    • 2018-09-01
    相关资源
    最近更新 更多