使用线程更新 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
在你的程序开始时
希望这能帮助您解决问题
我正在尝试制作一个显示字符串的 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
在你的程序开始时
希望这能帮助您解决问题