Python kivy 更新不同屏幕中的标签文本
Posted
技术标签:
【中文标题】Python kivy 更新不同屏幕中的标签文本【英文标题】:Python kivy update label text in different screens 【发布时间】:2021-05-11 20:15:11 【问题描述】:我正在做一个 kivy 项目。我已经测试了 kivymd 导航布局。我想知道如何更新屏幕 1 和屏幕 2 中的标签。例如,按下开始按钮时从 1 计数到 100。
我在网上搜索过这样的 kivy 更新标签: update label
但是在 kv 字符串中屏幕在“”中,而我的是“Screen:”,我试图创建一个名为 Screen() 的函数,但它不是 wokring。
谁能给我解释一下“”是什么意思以及如何动态更新 kivymd 导航布局中的标签?非常感谢
代码在这里:
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivymd.app import MDApp
KV = '''
<ContentNavigationDrawer>:
<ItemDrawer>:
theme_text_color: "Custom"
on_release: self.parent.set_color_item(self)
IconLeftWidget:
id: icon
icon: root.icon
theme_text_color: "Custom"
text_color: root.text_color
<ContentNavigationDrawer>:
orientation: "vertical"
padding: "8dp"
spacing: "8dp"
AnchorLayout:
anchor_x: "left"
size_hint_y: None
height: avatar.height
Image:
id: avatar
size_hint: None, None
size: "56dp", "56dp"
source: "data/logo/kivy-icon-256.png"
MDLabel:
text: "KivyMD library"
font_style: "Button"
size_hint_y: None
height: self.texture_size[1]
MDLabel:
text: "kivydevelopment@gmail.com"
font_style: "Caption"
size_hint_y: None
height: self.texture_size[1]
ScrollView:
MDList:
OneLineListItem:
text: "Screen 1"
on_press:
root.nav_drawer.set_state("close")
root.screen_manager.current = "scr 1"
OneLineListItem:
text: "Screen 2"
on_press:
root.nav_drawer.set_state("close")
root.screen_manager.current = "scr 2"
Screen:
MDToolbar:
id: toolbar
pos_hint: "top": 1
elevation: 10
title: "MDNavigationDrawer"
left_action_items: [["menu", lambda x: nav_drawer.set_state("open")]]
NavigationLayout:
x: toolbar.height
ScreenManager:
id: screen_manager
Screen:
name: "scr 1"
MDLabel:
text: "Screen 1"
halign: "center"
Screen:
name: "scr 2"
MDLabel:
text: "Screen 2"
halign: "center"
MDNavigationDrawer:
id: nav_drawer
ContentNavigationDrawer:
screen_manager: screen_manager
nav_drawer: nav_drawer
'''
class ContentNavigationDrawer(BoxLayout):
screen_manager = ObjectProperty()
nav_drawer = ObjectProperty()
class TestNavigationDrawer(MDApp):
def build(self):
return Builder.load_string(KV)
TestNavigationDrawer().run()
【问题讨论】:
【参考方案1】:您可以尝试使用app.root.get_screen('scr1').funct()
并创建一个函数来更改您想要的内容
【讨论】:
以上是关于Python kivy 更新不同屏幕中的标签文本的主要内容,如果未能解决你的问题,请参考以下文章
Python / Kivy - 在另一个调用函数的屏幕中替换标签的值