首页 > 解决方案 > Python/kivy - 文本输入到标签

问题描述

我的问题是关于 python 和 kivy。我目前正在使用 python 和 kivy 构建一个应用程序,但是我陷入了这个过程中非常重要的一步。我需要将一个屏幕的文本输入转换为另一个屏幕上的标签......我已经尝试了一些技巧,但没有成功......我非常感谢任何帮助。谢谢

标签: pythonkivy

解决方案


访问在您的 kv 文件中定义在 Kv lang 中的小部件

在以下示例中,我们使用ids从第二个屏幕引用第一个屏幕中的 TextInput 小部件。有关详细信息,请参阅代码段和示例。

片段

ScreenManager:
    FirstScreen:
        id: first_screen
    SecondScreen:
        id: second_screen


<FirstScreen@Screen>:
    name: 'firstScreen'

    BoxLayout:
        orientation: 'vertical'

        TextInput:
            id: user_input
            text: 'testing-1-2-3'
...
<SecondScreen@Screen>:
    name: 'secondScreen'

    BoxLayout:
        orientation: 'vertical'

        Label:
            # Accessing Widgets using ids
            text: root.manager.ids.first_screen.ids.user_input.text

Kv 语言 » 参考小部件

在小部件树中,通常需要访问/引用其他小部件。Kv 语言提供了一种使用 id 的方法来做到这一点

ScreenManager » 基本用法

默认情况下,每个屏幕都有一个属性,该属性manager为您提供所用 ScreenManager 的实例。

例子

主文件

from kivy.lang import Builder
from kivy.base import runTouchApp

runTouchApp(Builder.load_string('''
#:kivy 1.11.0

ScreenManager:
    FirstScreen:
        id: first_screen
    SecondScreen:
        id: second_screen


<FirstScreen@Screen>:
    name: 'firstScreen'

    BoxLayout:
        orientation: 'vertical'

        TextInput:
            id: user_input
            text: 'testing-1-2-3'

        Button:
            text: 'Second Screen'
            on_release:
                root.manager.current = 'secondScreen'


<SecondScreen@Screen>:
    name: 'secondScreen'

    BoxLayout:
        orientation: 'vertical'

        Label:
            # Accessing Widgets using ids
            text: root.manager.ids.first_screen.ids.user_input.text

        Button:
            text: 'First Screen'
            on_release:
                root.manager.current = 'firstScreen'

'''))

输出

Img01 - Screen1 中的文本输入 Img02 - Screen2 中的标签


推荐阅读