python - 从 kivymd 工具栏更改屏幕
问题描述
我想从 MDToolbar 更改屏幕。
from kivy.properties import BooleanProperty, ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivymd.app import MDApp
from kivy.core.window import Window
Window.size = (300, 500)
class MyLayout(BoxLayout):
scr_mngr = ObjectProperty(None)
def change_screen(self, screen, *args):
self.scr_mngr = screen
class MenuOSApp(MDApp):
def on_start(self):
pass
if __name__ == '__main__':
MenuOSApp().run()
和我的 .kv 文件
MyLayout:
orientation: "vertical"
MDBottomAppBar:
MDToolbar:
icon: "basket"
type: "bottom"
left_action_items: [["food", lambda x: root.change_screen('screen1') ], ["coffee", lambda x:root.change_screen('screen2')]]
mode: "free-end"
ScreenManager:
id: scr_mngr
Screen:
name: 'screen1'
MDToolbar:
title: "Screen 1"
Screen:
name: 'screen2'
MDToolbar:
title: "Screen 2"
不知何故,这不起作用。如果我尝试在 change_screen() 函数中打印出一些东西,那效果很好。有什么建议么?提前致谢。
解决方案
MyLayout:
scr_mngr: scr_mngr
或者
def change_screen(self, screen, *args):
self.root.ids.scr_mngr.current = screen
推荐阅读
- java - Space&NewLine Java
- angular - 如何以角度设置动态级联下拉的值?
- python - 有没有办法在旋转和移动布尔蒙版时修复 True 值的丢失?
- sql - 需要查询以使用 max(column_name) 条件连接同一表的 2 列
- python - 读取文件名并插入数据库(使用 python 和 MSSQL)
- php - 如何在页面加载时检查空表单变量
- python - Python ImportError:确认安装后没有名为“请求”的模块
- python - Pandas:对于 df 中的每一行,计算该值在另一列中存在的次数
- python - 一旦函数返回,什么会保留对函数嵌套类的引用?
- node.js - 电子和 MLab