Accordion控件,我姑且称之为折叠控件,因为有道翻译出来后是 可折叠的 管风琴。
动画效果如上图所示。
我们先看一下源代码:
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
class AccordionApp(App):
def build(self):
root = Accordion(orientation='vertical')
for x in range(5):
item = AccordionItem(title='Title %d' % x)
item.add_widget(Label(text='Very big content\n' * 10))
root.add_widget(item)
return root
if __name__ == '__main__':
AccordionApp().run()
整个控件,我们称之为Accordion, 里边的每一项则是 AccordionItem.
我们在创建这个对象的时候一般会构建一个如下的树形结构:
如果这个Item里边包含的东西太多的话,则有可能显示不了会抛出异常。
我们先来介绍 Accordion 这个类,这个类有几个很实用的参数,一个是已经使用了的 orientation,值为‘vertical’ 或者 ‘horizontal’,用来控制子项是上下滑动还是左右滑动。
第二个参数是 anim_duration, 用于控制子项滑动的速度,默认是0.25,也就是250毫秒。
第三个参数是 min_space,用于控制子项折叠后的最小空间。默认为44,调成30的效果就如下图所示:
接下来介绍一下 AccordionItem类。
它可以增加自定义的控件。比如这个我们使用的是Label。
可以给title指定背景图片
item1 = AccordionItem(title='first',background_normal='1.png',background_selected='2.png')
当然还有其他很多的操作参考API文档吧。