使用线程更新 Kivy 标签

Updating Kivy Label Using Threading

我正在尝试制作一个显示字符串的 Kivy 标签,该字符串只是一个名称列表。我的最终目标是做到这一点,以便您可以添加或删除名称列表,并且标签将指示列表中的名称。截至目前,我的 .py 文件中有一个标签和一个函数,可将名称列表编译成一个字符串。

字符串中的每个名称由“\n”分隔。然而,我的问题是标签不会更新并显示名称,即使函数 returns 名称也是如此。我研究了这个问题并听说了线程。但是,我不明白如何在我的案例中使用它,并请求一些指导。

下面是我的代码:

kv 代码:

<SettingsWindow>:
name:"settings"
FloatLayout:
Widget:
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: "Images/logo_br.png"
        Color:
            rgba: 0,0,0,.5
        Rectangle:
            size: 200, 330
            pos: self.width/10, self.height/4
Button:
    text:"Back"
    size_hint: 0.1, 0.1
    pos_hint: {"x":0, "y":0}
    background_color: 1,1,1,.6 
    on_release:
        app.root.current = "main"
        root.manager.transition.direction = 'right'
Label:
    text: root.pretty_list_people
    size: self.texture_size
    pos_hint: {"x":0.35, "y":-0.46}
    color: 1,1,1,1
Button:
    text:"Show Bros"  
    size_hint: 0.3, 0.3
    pos_hint: {"x":0.3, "y":0.1}
    on_press: root.Pretty_Print_People(root.get_str_People())

py 代码:

class SettingsWindow(Screen):
pretty_list_people = ""

def get_str_Jobs(self):
    return WindowManager.jobs

def get_str_People(self):
    return WindowManager.people

def Pretty_Print_People(self, ppl_list):
    for person in ppl_list:
        self.pretty_list_people += person + "\n"

class HelpWindow(Screen):
    pass

class WindowManager(ScreenManager):
    jobs = ["Scrub", "Wash", "Clean"]
    people = ["Anthony", "Tim", "John"]
    job_assignments = {}

我试图只显示必要的代码。

这应该可以,使用 kivy 属性:

变化:

pretty_list_people = ""

收件人:

pretty_list_people = StringProperty ("")

并添加导入:

from kivy.properties import StringProperty

在你的程序开始时

希望这能帮助您解决问题