使用线程更新 Kivy 标签
Posted
技术标签:
【中文标题】使用线程更新 Kivy 标签【英文标题】:Updating Kivy Label Using Threading 【发布时间】:2019-12-06 03:49:27 【问题描述】:我正在尝试制作一个 Kivy 标签,它显示一个只是名称列表的字符串。我的最终目标是使您可以添加或删除名称列表,并且标签将指示列表中的名称。到目前为止,我的 .py 文件中有一个标签和一个函数,可以将名称列表编译成一个字符串。
字符串中的每个名称都由“\n”分隔。然而,我的问题是,即使函数返回名称,标签也不会更新并显示名称。我研究了这个问题并听说了线程。但是,我不明白如何在我的情况下使用它,并寻求一些指导。
下面是我的代码:
千伏代码:
<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 =
我试图只显示必要的代码。
【问题讨论】:
【参考方案1】:这应该可以,使用 kivy 属性:
变化:
pretty_list_people = ""
收件人:
pretty_list_people = StringProperty ("")
并添加导入:
from kivy.properties import StringProperty
在程序开始时
希望这可以帮助您解决问题
【讨论】:
以上是关于使用线程更新 Kivy 标签的主要内容,如果未能解决你的问题,请参考以下文章