Kivy HELP:小部件和屏幕管理器

Posted

技术标签:

【中文标题】Kivy HELP:小部件和屏幕管理器【英文标题】:Kivy HELP: Widget and Screen manager 【发布时间】:2013-07-08 18:16:39 【问题描述】:

所以我正在创建一个应用程序,我需要这个东西:

小部件 1: - 带有来自 JSON 文件的数据的 GridLayout,每个数据行都转到一个按钮,因此基本上当您单击该按钮时,会出现一个弹出框。 - 弹出:这个包含一个数字键盘输入密码,然后你点击一个按钮进入主小部件

主小部件: - 这个从 JSON 文件中读取数据,然后将其放在网格布局中,就像在小部件 1 上一样

我可以很好地使用python而不是kv语言来制作小部件,我只是不能做一件事:从小部件1更改为主要小部件......请帮助我,我被这件事困住了一段时间好久好久……

【问题讨论】:

欢迎来到 SO Pedro。如果您发布一些您已经尝试过的示例代码,您的问题更有可能得到答案。 我不明白 JSON 有什么问题。我给了你一个如何从Screen 1 更改为Screen 2 的示例。也许你的问题是你使用的是任何其他Widget 而不是WidgetScreenManager 只接受 Screen 小部件。 【参考方案1】:

为了在屏幕之间切换,您只需要使用current 属性。基本上你必须告诉 ScreenManager 哪个是当前屏幕,但首先你必须给它们起个名字。这里有一个例子:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout

Builder.load_string("""
<Phone>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'
        ScreenManager:
            size_hint: 1, .9
            id: _screen_manager
            Screen:
                name: 'screen1'
                Label: 
                    text: 'The first screen'
            Screen:
                name: 'screen2'
                Label: 
                    text: 'The second screen'
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'bottom'
        BoxLayout:
            orientation: 'horizontal'
            size_hint: 1, .1
            Button:
                text: 'Go to Screen 1'
                on_press: _screen_manager.current = 'screen1'
            Button:
                text: 'Go to Screen 2'
                on_press: _screen_manager.current = 'screen2'""")

class Phone(FloatLayout):
    pass

class TestApp(App):
    def build(self):
        return Phone()

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

线

on_press: _screen_manager.current = 'screen1'

将告诉屏幕管理器用另一行更改名为“screen1”的屏幕

name: 'screen1'

【讨论】:

不错的答案!我不是 OP,但这对我很有用。

以上是关于Kivy HELP:小部件和屏幕管理器的主要内容,如果未能解决你的问题,请参考以下文章

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

python- .py 文件中的 Kivy 屏幕管理器

使用 kivy 和 python 返回屏幕管理器时未设置焦点

使用屏幕管理器更新 kivy 标签

如果在 kivy 文件中定义了屏幕管理器,如何在 Python 中更改屏幕?

Kivy 日期选择器小部件