Python 如何使用Kivymd和Python创建底部导航栏
KivyMD是Python的一个常用库,提供了一系列符合材料设计(MD)规范的小部件。这些小部件可以与另一个库Kivy一起使用,用于创建多点触控应用程序。KivyMD提供了大量的UI元素,包括按钮、卡片、对话框、菜单等等,所有这些元素都设计得非常吸引人。
导航栏是一个UI元素,允许用户在应用程序的不同屏幕/部分之间进行“导航”。它们通常位于屏幕的顶部或底部。如果我们使用安卓手机, 我们经常会在屏幕底部看到3个按钮。当我们使用WhatsApp或iOS的任何功能时, 我们会看到下面的功能,比如状态、通话、社群、聊天和设置,它们“导航”我们到不同的屏幕。在KivyMD中,MDBottomNavigation小部件使我们能够将MDBottomNavigationItem小部件添加到其中。每个这样的项目都有一个唯一的名称和一个描述其表示的屏幕的文本标签。还可以为每个项目添加图标,以帮助用户快速了解和识别屏幕简要信息。
在本文中,我们将看到如何通过KivyMD和Python创建底部导航栏。
在进行下一步之前,需要安装某些库,因为它们不是标准库的一部分。它们包括kivy和kivymd,其安装命令如下:
pip install kivy
pip install kivymd
让我们逐步实施。
第一步:导入所有必要的包
Kivymd.app是KivyMD库中的一个模块,其中包含MDApp类或基类,用于在KivyMD应用程序中使用。 它为我们提供了许多方法来初始化应用程序并管理其生命周期。 kivy.uix.screenmanager用于管理我们Kivy应用程序中的多个屏幕,它处理添加、删除和切换屏幕等活动。 接下来,我们有kivymd.uix.bottomnavigation,它包含在KivyMD应用程序中创建导航栏的要求。 它是表示底部导航栏的主要小部件。 最后,我们有kivy.lang.Builder,它是Kivy库中的一个模块,用于导入KV语言文件或使用字符串构建相应的小部件树。
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.uix.bottomnavigation import MDBottomNavigation
from kivy.lang import Builder
第二步:布局设计
就像我们在网站中使用HTML和XML来设计布局一样,在安卓中我们使用KV语言来设计布局。这里的第一部分是MDBottomNavigation类。根据导航栏内需要多少个小部件,我们将声明相应数量的子类或MDBottomNavigationItem,每个子类都带有名称、文本和与之对应的图标,以便用户更好地理解。MDLabel用于在屏幕上呈现指定的文本,并且halign标签被指定为居中,以确保文本位于屏幕中央。
KV='''<MDBottomNavigation>:
MDBottomNavigationItem:
name: 'screen1'
text: 'Android'
icon: 'android'
MDLabel:
text: 'Android'
halign: 'center'
MDBottomNavigationItem:
name: 'screen2'
text: 'Apple'
icon: 'apple'
MDLabel:
text: 'Apple'
halign: 'center'
MDBottomNavigationItem:
name: 'screen3'
text: 'Linux'
icon: 'linux'
MDLabel:
text: 'Linux'
halign: 'center'
MDBottomNavigationItem:
name: 'screen4'
text: 'Windows'
icon: 'microsoft-windows'
MDLabel:
text: 'Windows'
halign: 'center'
'''
第三步:集成和运行代码
在这一步中,我们声明了相应的屏幕类、屏幕管理器,并添加了小部件。为了运行使用kv语言编写的布局,我们使用了load_string()函数,并将kv字符串传递给它。或者我们也可以使用外部kv语言文件。构建器会处理所有小部件并生成小部件树。然后调用.run()方法,这样可以运行该类而不需要任何参数。
class Screen1(Screen):
pass
class Screen2(Screen):
pass
class Screen3(Screen):
pass
class Screen4(Screen):
pass
sm = ScreenManager()
sm.add_widget(Screen1(name='screen1'))
sm.add_widget(Screen2(name='screen2'))
sm.add_widget(Screen3(name='screen3'))
class TutorialsPointApp(MDApp):
def build(self):
Builder.load_string(KV)
return MDBottomNavigation()
if __name__ == '__main__':
TutorialsPointApp().run()
示例
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivymd.uix.bottomnavigation import MDBottomNavigation
from kivy.lang import Builder
KV='''<MDBottomNavigation>:
MDBottomNavigationItem:
name: 'screen1'
text: 'Android'
icon: 'android'
MDLabel:
text: 'Android'
halign: 'center'
MDBottomNavigationItem:
name: 'screen2'
text: 'Apple'
icon: 'apple'
MDLabel:
text: 'Apple'
halign: 'center'
MDBottomNavigationItem:
name: 'screen3'
text: 'Linux'
icon: 'linux'
MDLabel:
text: 'Linux'
halign: 'center'
MDBottomNavigationItem:
name: 'screen4'
text: 'Windows'
icon: 'microsoft-windows'
MDLabel:
text: 'Windows'
halign: 'center'
'''
class Screen1(Screen):
pass
class Screen2(Screen):
pass
class Screen3(Screen):
pass
class Screen4(Screen):
pass
sm = ScreenManager()
sm.add_widget(Screen1(name='screen1'))
sm.add_widget(Screen2(name='screen2'))
sm.add_widget(Screen3(name='screen3'))
class TutorialsPointApp(MDApp):
def build(self):
Builder.load_string(KV)
return MDBottomNavigation()
if __name__ == '__main__':
TutorialsPointApp().run()
输出
1. 在启动/点击第一个选项(即安卓)时
2. 点击Windows时
3. 点击Apple时
结论
KivyMD库是处理符合Material Design规范的小部件的非常好的选择。MDBottomNavigation小部件为我们提供了一个导航栏,可以在应用程序内切换多个屏幕,并且可以包含1个或多个MDBottomNavigationItem小部件。要使用KivyMD,我们需要确保设计布局以字符串(在此处使用)或外部文件的形式清晰地写入KV语言中。我们已经在底部导航栏中实现了4个小部件,它们是Android、Apple、Linux和Windows。当我们点击它们中的每一个时,屏幕会发生变化,并显示相应的名称作为文本。KivyMD非常有用,可以帮助Python开发人员创建现代响应式用户界面,并帮助希望在不同设备和平台上创建具有一致外观和感觉的跨平台应用程序的开发人员。