首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从不同的屏幕获取值(kivy)

从不同的屏幕获取值(kivy)
EN

Stack Overflow用户
提问于 2018-06-05 03:48:03
回答 1查看 1.5K关注 0票数 0

我正在尝试实现以下目标:在screen FolderB中从Label: id: fb捕获文本,然后在screen FolderA中通过按“从文件夹B获取文本”按钮将文本复制/添加到Label: id: fa中。请找到下面的代码:提前谢谢,

文件main.py

代码语言:javascript
复制
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder

Builder.load_file('foldera.kv')
Builder.load_file('folderb.kv')

class MainScreen(ScreenManager):
    pass

class FolderA(Screen):
    pass

class FolderB(Screen):
    pass

class FTest(App):
    def build(self):
        return MainScreen()


if __name__ == '__main__':
    FTest().run()

文件ftest.kv (类构建)

代码语言:javascript
复制
<FolderA@FolderA>
<FolderB@FolderB>

<MainScreen>:
    FolderA:
        name: 'foldera'
    FolderB:
        name: 'folderb'

文件布局( foldera.kv )

代码语言:javascript
复制
<FolderA>:
    BoxLayout:
        orientation: 'vertical'
        Label:
            text: 'Folder A'
        Button:
            text: 'go to Folder B'
            on_press: app.root.current = 'folderb'
        Label:
            id: fa
            text: ''
        Button:
            text: 'get text from Folder B'
            on_press: "this is the button where i'm trying to apply the action"

文件布局( folderb.kv )

代码语言:javascript
复制
<FolderB>:
    BoxLayout:
        orientation: 'vertical'
        Label:
            text: 'Folder B'
        Button:
            text: 'go to Folder B'
            on_press: app.root.current = 'foldera'
        Label:
            id: fb
            text: 'TEXT: CAPTURE THIS TEXT'

屏幕截图

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 06:19:13

例如,您可以将共享变量保存在App类中。

然后,您可以通过编写app.label_a在kv中访问它

试一下这个例子:

代码语言:javascript
复制
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.properties import StringProperty

Builder.load_string("""
<Manager>:
    Screen:
        name: 'first'
        BoxLayout:
            Label:
                text: app.label_a
            Button:
                text:'go to other'
                on_press: app.sm.current = 'other'

    Screen:
        name: 'other'
        BoxLayout:
            Label:
                id: label_b
                text: "Screen 2 label. Press button to change."
            Button:
                text:'Get label text from screen 1'
                on_press: label_b.text = app.label_a    
""")


class Manager(ScreenManager):
    pass


class MyApp(App):
    label_a = StringProperty("Screen 1 Label")

    def build(self):
        self.sm = Manager()
        return self.sm    

MyApp().run()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50687793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档