【发布时间】:2018-05-25 20:18:50
【问题描述】:
我正在尝试在kivy(kv)中做一个非常简单的例子如下:
#:import Toolbar kivymd.toolbar.Toolbar
BoxLayout:
orientation: 'vertical'
Toolbar:
id: toolbar
title: 'My Toolbar'
md_bg_color: app.theme_cls.primary_color
background_palette: 'Primary'
background_hue: '500'
left_action_items: [['arrow-left', app.root.ids.scr_mngr.current = 'screen1' ]]
right_action_items: [['arrow-right', app.root.ids.scr_mngr.current = 'screen2' ]]
ScreenManager:
id: scr_mngr
Screen:
name: 'screen1'
Toolbar:
title: "Screen 1"
Screen:
name: 'screen2'
Toolbar:
title: "Screen 2"
这将失败,因为 left_action_items 和 right_action_items 都需要一个对列表:[name_of_icon, expression]。另一方面,当您处理按钮时,该语句将是合法的,例如,如果我们执行以下操作:
on_release:
app.root.ids.scr_mngr.current = 'screen1'
另一方面,left_action_item 的正确方法是:
left_action_items: [['arrow-left', lambda x: app.root.ids.scr_mngr.current = 'screen1' ]]
但是这是不合法的,因为你不能在 python 下的 lambda 中执行这样的赋值。
left_action_items 改变屏幕的正确方法是什么?
【问题讨论】: