目录
- 选项卡面板
- 简单示例
- 自定义选项卡面板
StripLayoutTabbedPanelTabbedPanel.add_widget()TabbedPanel.background_colorTabbedPanel.background_disabled_imageTabbedPanel.background_imageTabbedPanel.bar_widthTabbedPanel.borderTabbedPanel.clear_widgets()TabbedPanel.contentTabbedPanel.current_tabTabbedPanel.default_tabTabbedPanel.default_tab_clsTabbedPanel.default_tab_contentTabbedPanel.default_tab_textTabbedPanel.do_default_tabTabbedPanel.remove_widget()TabbedPanel.scroll_typeTabbedPanel.strip_borderTabbedPanel.strip_imageTabbedPanel.switch_to()TabbedPanel.tab_heightTabbedPanel.tab_listTabbedPanel.tab_posTabbedPanel.tab_width
TabbedPanelContentTabbedPanelExceptionTabbedPanelHeaderTabbedPanelItemTabbedPanelStrip
选项卡面板¶
在 1.3.0 版本加入.
TabbedPanel 控件在标签页中管理不同的控件,其包含一个用于实际标签按钮的头部区域,以及一个用于显示当前标签页内容的内容区域。
TabbedPanel 提供了一个默认标签页。
简单示例¶
'''
TabbedPanel
============
Test of the widget TabbedPanel.
'''
from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.lang import Builder
Builder.load_string("""
<Test>:
size_hint: .5, .5
pos_hint: {'center_x': .5, 'center_y': .5}
do_default_tab: False
TabbedPanelItem:
text: 'first tab'
Label:
text: 'First tab content area'
TabbedPanelItem:
text: 'tab2'
BoxLayout:
Label:
text: 'Second tab content area'
Button:
text: 'Button that does nothing'
TabbedPanelItem:
text: 'tab3'
RstDocument:
text:
'\\n'.join(("Hello world", "-----------",
"You are in the third tab."))
""")
class Test(TabbedPanel):
pass
class TabbedPanelApp(App):
def build(self):
return Test()
if __name__ == '__main__':
TabbedPanelApp().run()
自定义选项卡面板¶
您可以指定标签页显示的位置:
tab_pos = 'top_mid'
单个标签页被称为TabbedPanelHeader。它是一个特殊的按钮,包含一个`content`属性。您需要先添加TabbedPanelHeader,然后单独设置其`content`属性:
tp = TabbedPanel()
th = TabbedPanelHeader(text='Tab2')
tp.add_widget(th)
单个标签页,由TabbedPanelHeader表示,需要设置其内容。该内容可以是任何控件。它可以是具有深层控件层级结构的布局,也可以是单个控件,如标签或按钮:
th.content = your_content_instance
在任何给定时间,所有标签页共享一个“主内容区域”处于激活状态。您的应用负责添加各个标签页的内容并管理它们,但不负责内容切换。标签面板会根据用户操作处理主内容对象的切换。
当TabbedPanel实例化时,会添加一个默认标签页。如上所述,您单独添加的标签页是在默认标签页之外额外添加的。因此,根据您的需求和设计,您可能需要自定义默认标签页:
tp.default_tab_text = 'Something Specific To Your Use'
默认标签页机制需要特别考虑和管理。因此,提供了一个 on_default_tab 事件,用于关联回调函数:
tp.bind(default_tab = my_default_tab_callback)
需要注意的是,默认情况下,default_tab_cls 的类型为 TabbedPanelHeader,因此它与其他标签页具有相同的属性。
自1.5.0版本起,通过将 do_default_tab 设置为 False,可以禁用 default_tab 的创建。
标签页和内容可以通过多种方式移除:
tp.remove_widget(widget/tabbed_panel_header)
or
tp.clear_widgets() # to clear all the widgets in the content area
or
tp.clear_tabs() # to remove the TabbedPanelHeaders
要访问选项卡面板的子组件,请使用content.children:
tp.content.children
要访问标签页列表,请使用以下代码:
tp.tab_list
要更改主选项卡面板内容的外观:
background_color = (1, 0, 0, .5) #50% translucent red
border = [0, 0, 0, 0]
background_image = 'path/to/background/image'
要更改单个标签页的背景,请使用以下两个属性:
tab_header_instance.background_normal = 'path/to/tab_head/img'
tab_header_instance.background_down = 'path/to/tab_head/img_pressed'
TabbedPanelStrip 包含各个选项卡的标题。要更改此选项卡条的外观,请覆盖 TabbedPanelStrip 的画布。例如,在 kv 语言中:
<TabbedPanelStrip>
canvas:
Color:
rgba: (0, 1, 0, 1) # green
Rectangle:
size: self.size
pos: self.pos
默认情况下,选项卡面板的条带会从选项卡面板的background_image和background_color中获取其背景图像和颜色。
- class kivy.uix.tabbedpanel.StripLayout(**kwargs)[源代码]¶
基类:
GridLayout用于容纳整个TabbedPanel条的主布局,包括当标签未覆盖整个宽度/高度时的空白区域。
在 1.8.0 版本加入.
- background_image¶
用于TabbedPanel的Strip布局的背景图像。
background_image是一个StringProperty,默认值为透明图像。
- border¶
background_image的边框属性。border是一个ListProperty,默认值为 [4, 4, 4, 4]。
- class kivy.uix.tabbedpanel.TabbedPanel(**kwargs)[源代码]¶
基类:
GridLayoutTabbedPanel 类。更多信息请参阅模块文档。
- 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)
- background_color¶
背景颜色,格式为 (r, g, b, a)。
background_color是一个ColorProperty,默认值为 [1, 1, 1, 1]。在 2.0.0 版本发生变更: 从
ListProperty更改为ColorProperty。
- background_disabled_image¶
主共享内容对象在禁用时的背景图像。
在 1.8.0 版本加入.
background_disabled_image是一个StringProperty,默认值为 'atlas://data/images/defaulttheme/tab'。
- background_image¶
主共享内容对象的背景图像。
background_image是一个StringProperty,默认值为 'atlas://data/images/defaulttheme/tab'。
- bar_width¶
水平滚动条的宽度。对于水平条而言,该宽度被解释为高度。
在 2.2.0 版本加入.
bar_width是一个NumericProperty,默认值为 2。
- border¶
用于
BorderImage图形指令的边框,其本身用于background_image。可更改为自定义背景。它必须是一个包含四个值的列表:(bottom, right, top, left)。更多信息请参阅 BorderImage 指令。
border是一个ListProperty,默认值为 (16, 16, 16, 16)。
- clear_widgets(*args, **kwargs)[源代码]¶
移除该部件的所有(或指定的):attr:~Widget.children。如果指定了'children'参数,它应为当前部件子项的一个列表(或过滤后的列表)。
在 1.8.0 版本发生变更: children 参数可用于指定你想要移除的子项。
在 2.1.0 版本发生变更: 指定一个空的``children``列表不会改变现有控件。此前,它会被视为``None``,从而移除所有子控件。
- content¶
这是保存当前标签页内容的对象(当前标签页的内容会被添加到该对象中)。要监听当前标签页内容的变化,您应该绑定到当前标签页的 content 属性。
content是一个ObjectProperty,默认值为 'None'。
- current_tab¶
当前选中或活动标签页的链接。
在 1.4.0 版本加入.
current_tab是一个AliasProperty,只读。
- default_tab¶
保存默认标签页。
备注
为了方便起见,当您将 default_tab 更改为其他内容时,自动提供的默认标签页会被删除。自1.5.0版本起,此行为已扩展到所有 default_tab,以保持一致性,而不仅仅是自动提供的那个。
default_tab是一个AliasProperty。
- default_tab_cls¶
指定用于默认选项卡样式的类。
在 1.4.0 版本加入.
警告
default_tab_cls 应从 TabbedPanelHeader 继承子类。
default_tab_cls是一个ObjectProperty,默认值为 TabbedPanelHeader。如果你设置一个字符串,将使用Factory来解析该类。在 1.8.0 版本发生变更: 如果设置了字符串,
Factory将解析该类。
- default_tab_content¶
保存默认的标签页内容。
- default_tab_text¶
指定默认标签页头部显示的文本。
default_tab_text是一个StringProperty,默认值为 'default tab'。
- do_default_tab¶
指定是否提供默认的标签页头部。
在 1.5.0 版本加入.
do_default_tab是一个BooleanProperty,默认值为 'True'。
- remove_widget(widget, *args, **kwargs)[源代码]¶
从该部件的子部件中移除一个部件。
- 参数:
- widget:
Widget 要从我们的子部件列表中移除的部件。
- widget:
>>> from kivy.uix.button import Button >>> root = Widget() >>> button = Button() >>> root.add_widget(button) >>> root.remove_widget(button)
- scroll_type¶
设置滚动视图内容所使用的滚动类型。可用选项有:['content']、['bars']、['bars', 'content']。
在 2.2.0 版本加入.
scroll_type是一个OptionProperty,默认值为 ['content']。
- strip_border¶
用于
strip_image的边框。在 1.8.0 版本加入.
strip_border是一个ListProperty,默认值为 [4, 4, 4, 4]。
- strip_image¶
选项卡条的背景图像。
在 1.8.0 版本加入.
strip_image是一个StringProperty,默认值为空图像。
- switch_to(header, do_scroll=False)[源代码]¶
切换到特定的面板标题。
在 1.10.0 版本发生变更.
如果与 do_scroll=True 一起使用,它也会滚动到页眉的标签页。
switch_to()不能在TabbedPanel或其子类的__init__方法中被调用。如果需要这样做,请使用Clock来调度它。完整的示例请参见 讨论。
- tab_height¶
指定标签页头部的高度。
tab_height是一个NumericProperty,默认值为 40。
- tab_list¶
所有标签页头的列表。
tab_list是一个AliasProperty,且为只读属性。
- tab_pos¶
指定标签页相对于内容的位置。可选值包括:left_top、left_mid、left_bottom、top_left、top_mid、top_right、right_top、right_mid、right_bottom、bottom_left、bottom_mid、bottom_right。
tab_pos是一个OptionProperty,默认值为 'top_left'。
- tab_width¶
指定标签页标题的宽度。
tab_width是一个NumericProperty,默认值为 100。
- class kivy.uix.tabbedpanel.TabbedPanelContent(**kwargs)[源代码]¶
基类:
FloatLayoutTabbedPanelContent 类。
- class kivy.uix.tabbedpanel.TabbedPanelHeader(**kwargs)[源代码]¶
基类:
ToggleButton用于实现选项卡面板头部的基础。一个旨在作为TabbedPanel小部件的标题/选项卡使用的按钮。
您可以使用此TabbedPanelHeader小部件向TabbedPanel添加新标签页。
- content¶
当此标签页头部被选中时,要加载的内容。
content是一个ObjectProperty,默认值为 None。
- on_touch_down(touch)[源代码]¶
接收触摸按下事件。
- 参数:
- touch:
MotionEvent类 收到触摸事件。该触摸位于父级坐标系中。关于坐标系统的讨论,请参阅
relativelayout。
- touch:
- 返回:
bool 如果为 True,触摸事件的派发将停止。如果为 False,事件将继续派发给控件树中的其余部分。
- class kivy.uix.tabbedpanel.TabbedPanelItem(**kwargs)[源代码]¶
-
这是一个便捷类,它提供了一个TabbedPanelHeader类型的头部,并自动将其与内容关联起来。因此,方便您在kv语言中简单地执行以下操作:
<TabbedPanel>: # ...other settings TabbedPanelItem: BoxLayout: Label: text: 'Second tab content area' Button: text: 'Button that does nothing'
在 1.5.0 版本加入.
- 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)
- class kivy.uix.tabbedpanel.TabbedPanelStrip(**kwargs)[源代码]¶
基类:
GridLayout用于作为标题/标签页背景的条状组件。此组件不覆盖标签页未占满TabbedPanel整个宽度/高度时的空白区域(如需覆盖,请使用:class:StripLayout)。
- tabbed_panel¶
指向标签条所属面板的链接。
tabbed_panel是一个ObjectProperty,默认值为 None。