类似Android侧边栏的控件。
项目描述
NavigationDrawer
NavigationDrawer控件提供了一个隐藏的面板视图,旨在复制流行的Android布局。用户查看一个主控件,但可以从屏幕左侧滑动以查看一个之前隐藏的控件。打开/关闭之间的转换平滑动画,参数(动画时间、面板宽度、触摸检测)均由用户配置。如果面板未完全打开或关闭时释放,则将其动画到适当的配置。
NavigationDrawer支持许多不同的动画属性,包括移动一个或两个侧边/主面板,变暗任一/两个控件,更改侧边面板不透明度,以及更改哪个控件位于顶部。用户可以单独编辑这些属性以符合个人口味(这绳子足够长,可以把自己吊死,很容易做出无用的或愚蠢的配置!),或者使用预设动画之一。
隐藏的面板通常是一组导航按钮(例如,在GridLayout中),但实现允许用户使用任何控件。
添加到NavigationDrawer的第一个控件将自动用作侧边面板,第二个控件用作主面板。无法添加更多控件,进一步的更改留给用户通过编辑面板控件来实现。
使用总结
- 添加到导航抽屉的第一个小部件用作隐藏的侧面板。
- 添加的第二个小部件用作主面板。
- 可以使用remove_widget移除这两个小部件,或者通过set_main_panel和set_side_panel设置/移除。
- 可以通过从导航抽屉的左侧拖动来显示隐藏的侧面板。触摸检测宽度是touch_accept_width属性。
- 每个动画属性都可以由用户编辑,或者可以通过设置anim_type选择默认动画。
有关各个属性的详细信息,请参阅示例和docstrings。
安装
pip install kivy-garden.navigationdrawer
示例
from kivy.app import App
from kivy.base import runTouchApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.metrics import dp
from kivy.garden.navigationdrawer import NavigationDrawer
class ExampleApp(App):
def build(self):
navigationdrawer = NavigationDrawer()
side_panel = BoxLayout(orientation='vertical')
side_panel.add_widget(Label(text='Panel label'))
side_panel.add_widget(Button(text='A button'))
side_panel.add_widget(Button(text='Another button'))
navigationdrawer.add_widget(side_panel)
label_head = (
'[b]Example label filling main panel[/b]\n\n[color=ff0000](p'
'ull from left to right!)[/color]\n\nIn this example, the le'
'ft panel is a simple boxlayout menu, and this main panel is'
' a BoxLayout with a label and example image.\n\nSeveral pre'
'set layouts are available (see buttons below), but users ma'
'y edit every parameter for much more customisation.')
main_panel = BoxLayout(orientation='vertical')
label_bl = BoxLayout(orientation='horizontal')
label = Label(text=label_head, font_size='15sp',
markup=True, valign='top')
label_bl.add_widget(Widget(size_hint_x=None, width=dp(10)))
label_bl.add_widget(label)
label_bl.add_widget(Widget(size_hint_x=None, width=dp(10)))
main_panel.add_widget(Widget(size_hint_y=None, height=dp(10)))
main_panel.add_widget(label_bl)
main_panel.add_widget(Widget(size_hint_y=None, height=dp(10)))
main_panel.add_widget(Image(source='red_pixel.png', allow_stretch=True,
keep_ratio=False, size_hint_y=0.2))
navigationdrawer.add_widget(main_panel)
label.bind(size=label.setter('text_size'))
def set_anim_type(name):
navigationdrawer.anim_type = name
modes_layout = BoxLayout(orientation='horizontal')
modes_layout.add_widget(Label(text='preset\nanims:'))
slide_an = Button(text='slide_\nabove_\nanim')
slide_an.bind(on_press=lambda j: set_anim_type('slide_above_anim'))
slide_sim = Button(text='slide_\nabove_\nsimple')
slide_sim.bind(on_press=lambda j: set_anim_type('slide_above_simple'))
fade_in_button = Button(text='fade_in')
fade_in_button.bind(on_press=lambda j: set_anim_type('fade_in'))
reveal_button = Button(text='reveal_\nbelow_\nanim')
reveal_button.bind(on_press=
lambda j: set_anim_type('reveal_below_anim'))
slide_button = Button(text='reveal_\nbelow_\nsimple')
slide_button.bind(on_press=
lambda j: set_anim_type('reveal_below_simple'))
modes_layout.add_widget(slide_an)
modes_layout.add_widget(slide_sim)
modes_layout.add_widget(fade_in_button)
modes_layout.add_widget(reveal_button)
modes_layout.add_widget(slide_button)
main_panel.add_widget(modes_layout)
button = Button(text='toggle NavigationDrawer state (animate)',
size_hint_y=0.2)
button.bind(on_press=lambda j: navigationdrawer.toggle_state())
button2 = Button(text='toggle NavigationDrawer state (jump)',
size_hint_y=0.2)
button2.bind(on_press=lambda j: navigationdrawer.toggle_state(False))
button3 = Button(text='toggle _main_above', size_hint_y=0.2)
button3.bind(on_press=navigationdrawer.toggle_main_above)
main_panel.add_widget(button)
main_panel.add_widget(button2)
main_panel.add_widget(button3)
return navigationdrawer
ExampleApp().run()
项目详情
关闭
kivy_garden.navigationdrawer-1.0.2.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 925eb1f7d58a6edf43d20f281ecf3573401405077e390dc9e43ee770fd1cc761 |
|
MD5 | 5a1bc6f8d511c72ee72aeab48c677bb8 |
|
BLAKE2b-256 | c17cc9be159d682d1e2e13ff29e42695114b1ab6dbb9b10d9946d1440d42418b |
关闭
kivy_garden.navigationdrawer-1.0.2-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 59db8147a61fdfc3b2e6b75aecc7af901533433d91c4390966aace40461c7a15 |
|
MD5 | 72dd7e2d2d029c4802db09257b581c18 |
|
BLAKE2b-256 | 8319dd8eeb7f462e60c2c5bcf29dac52b623b77bb72f8e81376bf86de77b38f6 |