如何从 python 文件中更改 kivy 标签的文本?

Posted

技术标签:

【中文标题】如何从 python 文件中更改 kivy 标签的文本?【英文标题】:How to change text of kivy label from python file? 【发布时间】:2022-01-21 06:00:00 【问题描述】:

找不到这个问题的答案。看过类似的帖子,但它们对我不起作用这里是我认为我必须处理的代码的简短 sn-ps

points="12"
class MainApp(MDApp):
    root.ids.points_label = points
    def build(self):
        return Builder.load_file("main.kv")

MainApp().run()

KV:

MDFloatLayout:

    MDLabel:
        text: 
        id: points_label
        pos_hint: "center_x": .5, "center_y": .5

我也在使用 KivyMD,所以这可能会对流程产生影响,我不知道。 卡在这个问题上一段时间了,希望您能提供帮助。

目标: 尝试将变量设置为 kivy MD 中的标签文本。

这是建议编辑后的代码,但现在显示空白的 kivymd 屏幕。这是所需的代码:

points = "12"
class MyFloatLayout(MDFloatLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.point_label_text = points

class MainApp(MDApp):
    def build(self):
        return Builder.load_file("main.kv")

INFO:点数仅在本示例中等于 12 千伏:

<MyFloatLayout>
    MDLabel:
        text: root.point_label_text
        pos_hint: "center_x": .5, "center_y": .5

此代码仍然无法正常工作是在 python 文件中导入 kivymd 类以防万一这是问题

from kivymd.uix.floatlayout import MDFloatLayout

希望你能从我更新的帖子中得到一些答案。

【问题讨论】:

【参考方案1】:

我建议创建一个自定义的 MDFloatLayout 类,你可以从中分配你的 points 变量,并在 kv 中引用它 例如:

.py

class MyFloatLayout(MDFloatLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.point_label_text = points

.kv

<MyFloatLayout>
    MDLabel:
        text: root.point_label_text
        pos_hint: "center_x": .5, "center_y": .5

【讨论】:

以上是关于如何从 python 文件中更改 kivy 标签的文本?的主要内容,如果未能解决你的问题,请参考以下文章

Kivy,从python文件更改画布的源图片

Python:如何在 kivy 中使标签加粗

Python Kivy - 更改标签颜色

如何在 Kivy 中动态更改标签背景颜色

如果在 kivy 文件中定义了屏幕管理器,如何在 Python 中更改屏幕?

如何从 kivy 文件 (.kv) 访问不同类的 id/widget?