如何在两个屏幕之间保持相同的标签文本

问题描述 投票:0回答:1

我是kivy和python的新手,所以我的代码并不完美。我正在尝试制作一个具有2个屏幕的程序,第一个屏幕的标签带有未定义且可以更改的文本,第二个屏幕的文本与第一个屏幕相同。]

我已经搜索了一个星期,我试图制作一个我编辑的全局变量,该变量成为第二个标签的文本,但是它不起作用。

我也尝试过String。属性()或对象。 property(),但我没有得到更多结果,我也不十分了解如何使用它。

欢迎任何帮助,<3

(对不起我的英语)

这是我的代码的一部分,我已尽可能简化:

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen


Builder.load_string("""

<MenuScreen>:
    label_wid : ratio
    FloatLayout:         
        Button:
            text: "options"
            pos: 270, 240
            size_hint: .30, .10
            background_color: 0,1,0,0.75
            on_press: root.manager.current = 'settings'
         Label:
            id:ratio
            text: ""
            pos: 0,90
            font_size:30
            color:1,0,0,1


<SettingsScreen>:
    label_wid2 : ratio
    FloatLayout:
        Label:
            id:ratio
            text: str(root.texte2())
            pos: 0,90
            font_size:30
            color:1,0,0,1

""")

u=""

class MenuScreen(Screen):

    def texte(self):
        global u
        u= self.label_wid.text = 'exemple' 
    pass

class SettingsScreen(Screen):

    def texte2(self):
        self.label_wid2.text=u


    pass


class Quizz(App):
    def build(self):
        self.title = 'Quizz'
        Window.clearcolor = (0, 1, 1, 0.25)
        return sm


sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))


if __name__ == '__main__':
    Quizz().run()
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen


Builder.load_string("""

<MenuScreen>:
    label_wid : ratio
    FloatLayout:         
        Button:
            text: "options"
            pos: 270, 240
            size_hint: .30, .10
            background_color: 0,1,0,0.75
            on_press: root.manager.current = 'settings'
         Label:
            id:ratio
            text: ""
            pos: 0,90
            font_size:30
            color:1,0,0,1


<SettingsScreen>:
    label_wid : ratio
    FloatLayout:
        Label:
            id:ratio
            text: root.texte2()
            pos: 0,90
            font_size:30
            color:1,0,0,1

""")

u=""

class MenuScreen(Screen):

    def texte(self):
        global u
        u= self.label_wid.text = 'exemple' 
    pass

class SettingsScreen(Screen):

    def texte2(self, text):
        u


    pass


class Quizz(App):
    def build(self):
        self.title = 'Quizz'
        Window.clearcolor = (0, 1, 1, 0.25)
        return sm


sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))


if __name__ == '__main__':
    Quizz().run() ```



我是kivy和python的新手,所以我的代码并不完美。我正在尝试制作一个有2个屏幕的程序,第一个屏幕上有一个标签,该标签的文字未定义并且可以更改,第二个屏幕...

python android mobile kivy kivy-language
1个回答
0
投票

StringProperty中使用ScreenManager为不同Labels中的两个Screens提供文本源。更改StringProperty会同时更改Labels

© www.soinside.com 2019 - 2024. All rights reserved.