目录
- 手风琴
- 简单示例
- 自定义手风琴组件。
AccordionAccordionExceptionAccordionItemAccordionItem.accordionAccordionItem.add_widget()AccordionItem.background_disabled_normalAccordionItem.background_disabled_selectedAccordionItem.background_normalAccordionItem.background_selectedAccordionItem.collapseAccordionItem.collapse_alphaAccordionItem.containerAccordionItem.container_titleAccordionItem.content_sizeAccordionItem.min_spaceAccordionItem.on_touch_down()AccordionItem.orientationAccordionItem.remove_widget()AccordionItem.titleAccordionItem.title_argsAccordionItem.title_template
手风琴¶
在 1.0.8 版本加入.
Accordion 控件是一种菜单形式,其中选项按垂直或水平方向堆叠,当聚焦(触摸)时,该项会展开以显示其内容。
Accordion 应包含一个或多个 AccordionItem 实例,每个实例应包含一个根内容部件。最终你会得到一个类似这样的树结构:
手风琴
手风琴项
请提供需要翻译的英文内容。
手风琴项
BoxLayout
另一个用户内容1
另一个用户内容2
手风琴项
好的,请发送需要翻译的英文内容。
当前实现将 AccordionItem 分为两个部分:
标题栏的一个容器
一个用于内容展示的容器。
标题栏由 Kv 模板构成。我们将了解如何创建新模板以自定义标题栏的设计。
警告
如果你看到类似这样的消息:
[WARNING] [Accordion] not have enough space for displaying all children
[WARNING] [Accordion] need 440px, got 100px
[WARNING] [Accordion] layout aborted.
这意味着你有太多子项,没有更多空间来显示内容。这是“正常”现象,不会采取任何操作。请尝试增加手风琴的空间或减少子项的数量。你也可以减小 Accordion.min_space 的值。
简单示例¶
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()
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()
自定义手风琴组件。¶
您可以增加标题栏的默认大小::
root = Accordion(min_space=60)
或将方向改为垂直:
root = Accordion(orientation='vertical')
AccordionItem 更具可配置性,您可以在项目折叠或展开时设置自定义标题背景::
item = AccordionItem(background_normal='image_when_collapsed.png',
background_selected='image_when_selected.png')
- class kivy.uix.accordion.Accordion(**kwargs)[源代码]¶
基类:
WidgetAccordion 类。更多信息请参阅模块文档。
- add_widget(widget, *args, **kwargs)[源代码]¶
将一个新部件添加为此部件的子部件。
- 参数:
- widget:
Widget 要添加到我们子控件列表中的控件。
- index:整数,默认值为0
在列表中插入小部件的索引。请注意,默认值为0意味着小部件被插入到列表的开头,因此会绘制在其他同级小部件之上。关于索引和小部件层次结构的完整讨论,请参阅 小部件编程指南。
在 1.0.5 版本加入.
- canvas:字符串,默认为 None
用于添加控件画布的Canvas。可以是'before'、'after'或None(默认画布)。
在 1.9.0 版本加入.
- widget:
>>> from kivy.uix.button import Button >>> from kivy.uix.slider import Slider >>> root = Widget() >>> root.add_widget(Button()) >>> slider = Slider() >>> root.add_widget(slider)
- anim_duration¶
当选择新的手风琴项目时,动画的持续时间(以秒为单位)。
anim_duration是一个NumericProperty,默认值为 .25(250毫秒)。
- anim_func¶
用于动画的缓动函数。有关可用动画函数的更多信息,请参阅
kivy.animation.AnimationTransition。anim_func是一个ObjectProperty,默认值为 'out_expo'。您可以设置一个字符串或函数作为缓动函数使用。
- min_space¶
每个项目标题使用的最小空间。每次布局事件发生时,此值会自动为每个子项设置。
min_space是一个NumericProperty,默认值为 44(像素)。
- orientation¶
布局的方向。
orientation是一个OptionProperty,默认值为 'horizontal'。可取值 'vertical' 或 'horizontal'。
- class kivy.uix.accordion.AccordionItem(**kwargs)[源代码]¶
基类:
FloatLayout必须与
Accordion类结合使用的 AccordionItem 类。更多信息请参阅模块文档。- accordion¶
该项所属的
Accordion实例。accordion是一个ObjectProperty,默认值为 None。
- add_widget(*args, **kwargs)[源代码]¶
将一个新部件添加为此部件的子部件。
- 参数:
- widget:
Widget 要添加到我们子控件列表中的控件。
- index:整数,默认值为0
在列表中插入小部件的索引。请注意,默认值为0意味着小部件被插入到列表的开头,因此会绘制在其他同级小部件之上。关于索引和小部件层次结构的完整讨论,请参阅 小部件编程指南。
在 1.0.5 版本加入.
- canvas:字符串,默认为 None
用于添加控件画布的Canvas。可以是'before'、'after'或None(默认画布)。
在 1.9.0 版本加入.
- widget:
>>> from kivy.uix.button import Button >>> from kivy.uix.slider import Slider >>> root = Widget() >>> root.add_widget(Button()) >>> slider = Slider() >>> root.add_widget(slider)
- background_disabled_normal¶
折叠且禁用状态下,手风琴项默认图形表示所使用的背景图像。
在 1.8.0 版本加入.
background__disabled_normal是一个StringProperty,默认值为 'atlas://data/images/defaulttheme/button_disabled'。
- background_disabled_selected¶
用于手风琴项目在选中(未折叠)且禁用状态下的默认图形表示背景图像。
在 1.8.0 版本加入.
background_disabled_selected是一个StringProperty,默认值为 'atlas://data/images/defaulttheme/button_disabled_pressed'。
- background_normal¶
折叠状态下,手风琴项默认图形表示所使用的背景图像。
background_normal是一个StringProperty,默认值为 'atlas://data/images/defaulttheme/button'。
- background_selected¶
用于手风琴项目在选中(未折叠)状态下默认图形表示时的背景图像。
background_normal是一个StringProperty,默认值为 'atlas://data/images/defaulttheme/button_pressed'。
- collapse¶
布尔值,指示当前项目是否已折叠。
collapse是一个BooleanProperty,默认值为 True。
- collapse_alpha¶
0到1之间的值,用于指示项目折叠程度(1)或是否被选中(0)。此值主要用于动画效果。
collapse_alpha是一个NumericProperty,默认值为 1。
- container¶
(内部)属性,将被设置为AccordionItem表示内部子项的容器。
- container_title¶
(内部)属性,将被设置为AccordionItem表示中标题的容器。
- min_space¶
链接到
Accordion.min_space属性。
- on_touch_down(touch)[源代码]¶
接收触摸按下事件。
- 参数:
- touch:
MotionEvent类 收到触摸事件。触摸坐标位于父级坐标系中。关于坐标系统的讨论,请参阅
relativelayout。
- touch:
- 返回:
bool 如果为 True,触摸事件的派发将停止。如果为 False,事件将继续派发给控件树中的其余部分。
- orientation¶
链接到
Accordion.orientation属性。
- remove_widget(*args, **kwargs)[源代码]¶
从该部件的子部件中移除一个部件。
- 参数:
- widget:
Widget 要从我们的子部件列表中移除的部件。
- widget:
>>> from kivy.uix.button import Button >>> root = Widget() >>> button = Button() >>> root.add_widget(button) >>> root.remove_widget(button)
- title¶
条目的标题字符串。标题可能与`AccordionItemTitle`模板结合使用。如果你使用的是自定义模板,你可以将该属性用作文本输入,也可以不使用。默认情况下,它用于标题文本。参见title_template及以下示例。
title是一个StringProperty,默认值为 ''。
- title_args¶
将传递给
kivy.lang.Builder.template()方法的默认参数。title_args是一个DictProperty,默认值为 {}。
- title_template¶
用于创建手风琴项目标题部分的模板。默认模板是一个简单的Label,不可自定义(除了文本),支持垂直和水平方向,并为折叠和选中模式提供不同的背景。
如果默认模板不够用,最好创建并使用自己的模板。
title是一个StringProperty,默认值为 'AccordionItemTitle'。当前默认模板位于 kivy/data/style.kv 文件中。以下是构建您自己的模板所需的代码:
[AccordionItemTitle@Label]: text: ctx.title canvas.before: Color: rgb: 1, 1, 1 BorderImage: source: ctx.item.background_normal if ctx.item.collapse else ctx.item.background_selected pos: self.pos size: self.size PushMatrix Translate: xy: self.center_x, self.center_y Rotate: angle: 90 if ctx.item.orientation == 'horizontal' else 0 axis: 0, 0, 1 Translate: xy: -self.center_x, -self.center_y canvas.after: PopMatrix