如何设置Kivy程序启动默认打开主屏幕及自定义菜单图标显示
问题解决方案
修改内容说明
1. 设置默认启动HomeScreen
通过指定MDBottomNavigation的默认选中项,实现启动时直接进入HomeScreen,同时修正屏幕名称与导航项的匹配问题。
2. 实现图标/文字自定义显示
通过绑定布尔变量控制导航项的图标和文字显示状态,支持动态切换仅显示文字、仅显示图标或两者都显示的模式。
修改后的代码
main.py
from kivymd.app import MDApp from kivy.lang import Builder from kivy.uix.floatlayout import FloatLayout from kivy.uix.screenmanager import Screen from kivy.core.window import Window from kivy.utils import get_color_from_hex from kivy.core.text import LabelBase Window.size = (430, 930) class ShopScreen(Screen): pass class ItemsScreen(Screen): pass class HomeScreen(Screen): Builder.load_file("Home.kv") class WindowManager(FloatLayout): pass class MainApp(MDApp): def build(self): self.theme_cls.theme_style = "Dark" # 控制图标和文字显示的开关变量 self.show_icons = True self.show_texts = True Builder.load_file("main.kv") return WindowManager() # 切换图标显示状态 def toggle_icons(self): self.show_icons = not self.show_icons # 切换文字显示状态 def toggle_texts(self): self.show_texts = not self.show_texts if __name__ == "__main__": LabelBase.register(name="Press Start 2P", fn_regular='./font/PressStart2P-Regular.ttf') MainApp().run()
main.kv
#: import get_color_from_hex kivy.utils.get_color_from_hex <WindowManager>: MDBottomNavigation: font_name: "./font/PressStart2P-Regular.ttf" panel_color: get_color_from_hex("#1B1B1B") text_color_active: 1, 1, 0, 1 # 设置默认选中HomeScreen对应的导航项 current: 'main' MDBottomNavigationItem: # 根据开关变量控制图标显示 icon: 'home' if app.show_icons else '' name: 'shop' # 根据开关变量控制文字显示 text: 'МАГАЗИН' if app.show_texts else '' ShopScreen: MDBottomNavigationItem: icon: 'home' if app.show_icons else '' name: 'main' text: 'ГОЛОВНА' if app.show_texts else '' HomeScreen: MDBottomNavigationItem: icon: 'home' if app.show_icons else '' name: 'items' text: 'ХЕЛПЕРИ' if app.show_texts else '' ItemsScreen: # 测试用的切换按钮,可根据需求移除 MDFloatLayout: MDRaisedButton: text: "切换图标显示" pos_hint: {"x":0.1, "top":0.98} on_press: app.toggle_icons() MDRaisedButton: text: "切换文字显示" pos_hint: {"x":0.5, "top":0.98} on_press: app.toggle_texts()
关键修改点解析
- 默认启动HomeScreen:在
MDBottomNavigation中添加current: 'main',直接指定启动时选中的导航项;同时修正ShopScreen的名称为'shop',确保与导航项名称匹配。 - 自定义显示控制:
- 静态设置:如果不需要动态切换,直接将对应导航项的
icon或text设为空字符串即可(比如icon: ''隐藏图标)。 - 动态切换:通过
show_icons和show_texts变量绑定导航项的属性,配合按钮触发状态切换,实现实时调整显示模式。
- 静态设置:如果不需要动态切换,直接将对应导航项的
内容的提问来源于stack exchange,提问作者Aster
相关产品推荐
相关产品推荐

