gpt4 book ai didi

python - Kivy - 屏幕管理器 - 访问其他类中的属性

转载 作者:太空狗 更新时间:2023-10-29 22:15:51 26 4
gpt4 key购买 nike

使用 Kivy 屏幕管理器,我创建了两个屏幕。在屏幕 1 中,我想更改屏幕 2 中的标签。我在我的代码中突出显示了有问题的区域:

我的test.ky:

#: import ScreenManager kivy.uix.screenmanager.ScreenManager
#: import Screen kivy.uix.screenmanager.ScreenManager
#: import SettingsScreen screen


ScreenManager:
MenuScreen:
SettingsScreen:


<MenuScreen>:
name: 'MenuScreen'
BoxLayout:
Button:
text: 'Goto nn'
on_press:
root.manager.current = 'SettingsScreen'
root.change_text()


<SettingsScreen>:
name: 'SettingsScreen'
label_id: label_field
BoxLayout:
Label:
id: label_field
text: "to_be_changed"

和我的screen.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen


class MenuScreen(Screen):
def change_text(self):
pass
# HERE: something like
# root.SettingsScreen.label_field.text = 'new text'


class SettingsScreen(Screen):
pass


class TestApp(App):
pass

TestApp().run()

非常感谢任何帮助!谢谢,妮可

最佳答案

这个怎么样:

当您按下 MenuScreen 上的按钮时,它会在自身上设置一个属性,其中包含您要放入 SettingsScreen 标签中的文本。然后在kv文件中给MenuScreen赋一个id值,用来引用这个属性。示例:

主.py

class MenuScreen(Screen):
text = StringProperty('')
def change_text(self):
self.text = "The text you want to set"
self.manager.current = "SettingsScreen"

class SettingsScreen(Screen):
label_text = StringProperty('')

kv文件

ScreenManager:
id: screen_manager
MenuScreen:
id: menu_screen
name: 'MenuScreen'
manager: screen_manager
SettingsScreen:
name: 'SettingsScreen'
manager: screen_manager
label_text: menu_screen.text

<MenuScreen>:
BoxLayout:
Button:
text: 'Goto nn'
on_press:
root.change_text()

<SettingsScreen>:
BoxLayout:
Label:
text: root.label_text

如您所见,我在 kv 文件中的 ScreenManager 下设置了屏幕的名称和 ID,因为这是我通常会做的事情。

关于python - Kivy - 屏幕管理器 - 访问其他类中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com