python-2.7 - 在kivy python中在屏幕之间交换变量

标签 python-2.7 properties kivy

我尝试制作一个应用程序,有两个屏幕,一个带有文本输入,另一个带有标签,用于显示文本输入的文本。 我尝试通过在应用程序类中创建 StringProperty 来实现此目的,但访问该属性时遇到问题。 我想知道如何访问变量。 这是源代码:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout


class Manager(ScreenManager):
    pass
class FirstScreen(Screen):
    pass
class SecondScreen(Screen):
    pass
root_widget = Builder.load_string('''
Manager:
    FirstScreen:
    SecondScreen:
<FirstScreen>:
    name: 'first'
    BoxLayout:
        orientation: 'vertical'
        TextInput:
            id: my_text
            font_size: 50
        Button:
            id: b1
            text: 'Go to next Screen'
            on_release: app.root.current = 'second'
<SecondScreen>:
    name: 'second'
    BoxLayout:
        orientation: 'vertical'
        Label:
            id: my_Label
            text: root.txt
        Button
            id: b2
            text: 'Go back'
            on_release: app.root.current = 'first'
''')
class Caption(App):
    txt = StringProperty('')
    def build(self):
        return root_widget

Caption().run()

最佳答案

Screen 类有一个名为“manager”的属性,它指定该屏幕属于哪个管理器。在ScreenManager类中,有一个名为“screens”的属性,它是一个保存所有屏幕的ListProperty对象。如果你想获取另一个屏幕的信息,你可以使用这种方式。在您的情况下,您需要使用以下内容更新 kv Builder 中的 b1 id 按钮:

Button:
    id: b1
    text: 'Go to next screen'
    on_release:
        root.manager.screens[1].ids.my_Label.text = root.ids.my_text.text
        root.manager.current = 'second'

对于更复杂的行为,您可以在特定的 Page 类中定义相关的属性,并通过 python 进行访问:

self.manager.screens[<screen_number>].ids.<widget_id>.<property_name>

关于python-2.7 - 在kivy python中在屏幕之间交换变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758126/

相关文章:

python - 无法为 nltk 导入名称 defaultdict 错误

android - 继续获取 "Program python is not found in PATH"

python - 将 rgba 颜色代码 255,255,255,255 转换为 1,1,1,1 中的 kivy 颜色代码

python - 无法获取窗口,中止

python - Kivy 禁用屏幕超时

python - 为什么我不能从多处理队列中捕获 Queue.Empty 异常?

python - 使用自定义 django 模型后无法登录

PHP 对象 : property Object Vs stdClass Object - which one is better?

java - 如果在命令行中提供了新值,如何覆盖从属性文件加载的值

c# - 比较属性不使用比较属性的显示属性