python - 如何从不同的班级访问屏幕管理器?(基维)
问题描述
我相信这将是另一个简单的,但我不确定如何从 python 代码的不同屏幕中访问我的屏幕管理器。我可以让它在 kv 文件中使用 root.manager.current = 'screen' 进行切换,但这显然在 python 中不起作用。
我的.kv:
...
<Screen3>
GridLayout:
Button:
text:"submit"
on_press: root.submit()
主文件
from kivy import yadayada
kv_str = """
<Screen1>
canvas:
Rectangle:
pos: self.pos
size: self.size
<Screen2>
canvas:
Rectangle:
pos: self.pos
size: self.size
<Screen3>
canvas:
Rectangle:
pos: self.pos
size: self.size
"""
Builder.load_string(kv_str)
class Screen1(Screen):
pass
class Screen2(Screen):
pass
class Screen3(Screen):
def submit(self):
#trying to switch screens here
class MyApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(Screen1(name='screen1'))
sm.add_widget(Screen2(name='screen2'))
sm.add_widget(Screen3(name='screen3'))
return sm
if __name__ == '__main__':
MyApp().run()
解决方案
在您的submit()
方法中,您可以使用:
self.manager.current = `screen1`
推荐阅读
- python-3.x - 转换 dtype= 的变量
我正在使用 pandas 从 csv 读取值,我遇到了一种我以前从未见过的格式,举个例子:
myval = array('[1.0, 0, 0, 0]', dtype='<U14')
我想将 myval 转换为整数/浮点数列表,但我尝试的任何方法似乎都与这种数据类型的变量不兼容。将不胜感激任何帮助。
< - laravel - PHP Laravel 应用程序 (Ubuntu) 中的 AWS 凭证异常
- c# - 具有不同变量名的对象的 C# 模板类
- flutter - 在 Flutter Web 应用程序中更改屏幕尺寸
- json - 基于最小值的 JSON Schema 依赖
- python - 从Python中的Excel单元格中提取数字
- python - Matplotlib 在设置 x/y 限制后“擦除”行
- java - JOOQ - 内联转换器未应用
- node.js - URL 不会随 res.render() 改变
- bash - bash将mp3文件与文件名中的空格结合起来