如何在程序启动时让主店打开而不是商店
该程序有一个菜单和三个屏幕。我启动时需要打开主屏幕而不是商店
也许还有一个选项可以从菜单中删除图标,以便菜单是文本,反之亦然
主.py
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, 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"
sm = ScreenManager()
sm.add_widget(ShopScreen(name='menu'))
sm.add_widget(ItemsScreen(name='items'))
sm.add_widget(HomeScreen(name='main'))
Builder.load_file("main.kv")
return WindowManager()
if __name__ == "__main__":
LabelBase.register(name="Press Start 2P",
fn_regular='./font/PressStart2P-Regular.ttf')
MainApp().run()
主.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
MDBottomNavigationItem:
icon: 'home'
name: 'shop'
text: 'МАГАЗИН'
MDBottomNavigationItem:
icon: 'home'
name: 'main'
text: 'ГОЛОВНА'
HomeScreen:
MDBottomNavigationItem:
icon: 'home'
name: 'items'
text: 'ХЕЛПЕРИ'
简短回答:
将要首先启动的屏幕行移动到顶部位置,如下所示:
class MainApp(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
sm = ScreenManager()
sm.add_widget(HomeScreen(name='main'))
sm.add_widget(ItemsScreen(name='items'))
sm.add_widget(ShopScreen(name='menu'))
Builder.load_file("main.kv")
return WindowManager()
长答案:在 ScreenManager() 的开头,您正在定义屏幕的顺序。您不能直接从其他屏幕调用这些屏幕。也许这就是你想要的。但是,这里有一个如何实现它的示例:
class MainApp(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
sm = ScreenManager()
sm.add_widget(HomeScreen(name='main'))
sm.add_widget(ItemsScreen(name='items'))
sm.add_widget(ShopScreen(name='menu'))
return sm
Builder.load_file("main.kv")
return WindowManager()
当您在另一个屏幕时,您可以使用此代码切换到另一个屏幕。
# In another class, for example, a button event or somewhere else where you have access to the `MainApp` instance
from kivy.uix.screenmanager import ScreenManager
class SomeClass:
def some_method(self):
# Get the instance of MainApp and Access the ScreenManager of MainApp
screen_manager = MainApp.get_running_app().screen_manager
# Change the currently displayed screen to 'menu'
screen_manager.current = 'menu'
我希望这对你有帮助。