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

python – Kivy – 屏幕管理器 – 访问其他类中的属性,第1张

概述使用Kivy Screen Manager,我创建了两个Screens.在屏幕1中,我想在屏幕2中更改标签.我在我的代码中突出显示了有问题的区域: 我的test.ky: #: import ScreenManager kivy.uix.screenmanager.ScreenManager#: import Screen kivy.uix.screenmanager.ScreenManager 使用Kivy Screen Manager,我创建了两个Screens.在屏幕1中,我想在屏幕2中更改标签.我在我的代码中突出显示了有问题的区域:

我的test.ky:

#: import ScreenManager kivy.uix.screenmanager.ScreenManager#: import Screen kivy.uix.screenmanager.ScreenManager#: import SettingsScreen screenScreenManager:    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 Appfrom kivy.uix.Boxlayout import BoxLayoutfrom kivy.uix.screenmanager import ScreenManager,Screenclass MenuScreen(Screen):    def change_text(self):        pass        # HERE: something like        # root.SettingsScreen.label_fIEld.text = 'new text'class SettingsScreen(Screen):    passclass TestApp(App):    passTestApp().run()

任何帮助是极大的赞赏!
谢谢,尼科

解决方法 这个怎么样:

当您按下MenuScreen上的按钮时,它会在其自身上设置一个属性,其中包含您要放入SettingsScreen标签中的文本.然后在菜单屏幕中为kv文件分配一个ID值,该值用于引用此属性.例:

main.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

正如您所看到的,我在屏幕管理器中设置了屏幕的名称和ID在kv文件中,因为这是我通常要做的工作.

总结

以上是内存溢出为你收集整理的python – Kivy – 屏幕管理器 – 访问其他类中的属性全部内容,希望文章能够帮你解决python – Kivy – 屏幕管理器 – 访问其他类中的属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存