1. 简介
MDToolbar是KivyMD中用于显示应用程序标题和导航栏的工具栏控件。它具有许多属性和方法,可以自定义工具栏的外观和行为。
2. 基本用法
要创建一个MDToolbar,您可以使用以下代码:
Python
from kivymd.app import MDApp
from kivymd.uix.toolbar import MDToolbar
class MyMDApp(MDApp):
def build(self):
toolbar = MDToolbar(title="My App", left_action_items=[["menu", lambda x: None]])
return toolbar
if __name__ == "__main__":
MyMDApp().run()
此代码将创建一个新的MDToolbar实例,并设置其标题为“My App”。它还将添加一个左导航按钮,点击时会触发一个空函数。
您可以将MDToolbar添加到任何Kivy布局中。以下是如何将其添加到MDScreen中的示例:
Python
from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivymd.uix.toolbar import MDToolbar
class MyMDScreen(MDScreen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.toolbar = MDToolbar(title="My Screen")
self.add_widget(self.toolbar)
class MyMDApp(MDApp):
def build(self):
return MyMDScreen()
if __name__ == "__main__":
MyMDApp().run()
3. 属性
MDToolbar具有许多属性,可用于自定义其外观。以下是一些常用的属性:
- title: 工具栏标题
- elevation: 工具栏阴影高度
- theme_toolbar_background_color: 工具栏背景颜色,可选值为Material Design主题中的颜色名称
- toolbar_background_color: 工具栏背景颜色,可以使用RGBA格式的元组指定
- left_action_items: 左导航按钮列表,每个按钮是一个元组,第一个元素是按钮图标名称,第二个元素是按钮点击时触发的回调函数
- right_action_items: 右导航按钮列表,每个按钮是一个元组,第一个元素是按钮图标名称,第二个元素是按钮点击时触发的回调函数
- top_action_items: 顶部按钮列表,每个按钮是一个元组,第一个元素是按钮图标名称,第二个元素是按钮点击时触发的回调函数
- md_logo: 工具栏徽标,可以使用MDIcon图标或图像
以下是如何设置一些属性的示例:
Python
toolbar = MDToolbar(
title="Custom Toolbar",
elevation=20,
theme_toolbar_background_color="Primary",
toolbar_background_color=(0.2, 0.4, 0.6, 1),
left_action_items=[["menu", lambda x: None], ["home", lambda x: None]],
right_action_items=[["search", lambda x: None]],
top_action_items=[["settings", lambda x: None]],
md_logo=MDIcon("google"),
)
4. 方法
MDToolbar还提供了一些方法,可用于控制其行为。以下是一些常用的方法:
5. 不同的类型的MDToolbar
KivyMD提供了几种不同类型的MDToolbar,您可以根据需要选择使用。以下是一些常见的类型:
以下是如何创建不同类型的MDToolbar的示例:
Standard Toolbar:
Python
from kivymd.app import MDApp
from kivymd.uix.toolbar import MDToolbar
class MyMDApp(MDApp):
def build(self):
toolbar = MDToolbar(
title="My App",
left_action_items=[["menu", lambda x: None]],
right_action_items=[["search", lambda x: None]],
)
return toolbar
if __name__ == "__main__":
MyMDApp().run()
Top Navigation Toolbar:
Python
from kivymd.app import MDApp
from kivymd.uix.toolbar import MDToolbar
class MyMDApp(MDApp):
def build(self):
toolbar = MDToolbar(
title="My App",
top_action_items=[["settings", lambda x: None]],
)
return toolbar
if __name__ == "__main__":
MyMDApp().run()
Tab Bar:
Python
from kivymd.app import MDApp
from kivymd.uix.tab import MDTabs
from kivymd.uix.tabbar import MDTabBar
from kivymd.uix.screen import MDScreen
class MyMDScreen(MDScreen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.tab_bar = MDTabBar(
md_tabs=[
MDTab(text="Tab 1", screen=MyMDScreen1()),
MDTab(text="Tab 2", screen=MyMDScreen2()),
]
)
self.add_widget(self.tab_bar)
class MyMDScreen1(MDScreen):
pass
class MyMDScreen2(MDScreen):
pass
class MyMDApp(MDApp):
def build(self):
return MyMDScreen()
if __name__ == "__main__":
MyMDApp().run()
Search Bar:
Python
from kivymd.app import MDApp
from kivymd.uix.textfield import MDTextField
from kivymd.uix.toolbar import MDToolbar
class MyMDApp(MDApp):
def build(self):
search_bar = MDTextField(
text="",
pos_hint={"center_x": 0.5, "top": 1},
padding=(15, 0),
use_theme_colors=True,
line_color_focus=(0, 0, 0),
theme_text_color="Custom",
text_color=(0, 0, 0),
on_text_validate=lambda instance, text: print(f"Search text: {text}"),
)
toolbar = MDToolbar(title="My App", right_action_items=[["search", lambda x: None]])
toolbar.add_widget(search_bar)
return toolbar
if __name__ == "__main__":
MyMDApp().run()
6. 总结
MDToolbar是一个功能强大的控件,可用于创建各种各样的工具栏。通过了解其属性和方法,您可以轻松自定义工具栏的外观和行为,以满足您的需求。
- set_title(title): 设置工具栏标题
- get_title(): 获取工具栏标题
- add_left_action_item(icon_name, callback): 添加左导航按钮
- remove_left_action_item(icon_name): 删除左导航按钮
- clear_left_action_items(): 清除所有左导航按钮
- add_right_action_item(icon_name, callback): 添加右导航按钮
- remove_right_action_item(icon_name): 删除右导航按钮
- clear_right_action_items(): 清除所有右导航按钮
- add_top_action_item(icon_name, callback): 添加顶部按钮
- remove_top_action_item(icon_name): 删除顶部按钮
- clear_top_action_items(): 清除所有顶部按钮
- set_md_logo(md_icon): 设置工具栏徽标
- get_md_logo(): 获取工具栏徽标
- Standard Toolbar: 标准工具栏,包含标题和左右导航按钮。这是最常用的类型。
- Top Navigation Toolbar: 顶部导航工具栏,仅包含顶部按钮。
- Tab Bar: 标签栏,用于在多个页面之间切换。
- Search Bar: 搜索栏,用于输入搜索内容。