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
而不是Widget
。 ScreenManager
只接受 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 返回屏幕管理器时未设置焦点