我正在练习 KivyMD Swiper,出于某种原因,它覆盖了底部栏应用程序,问题:请问我该如何解决这个问题。
这是我的 main.py 文件:
from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.core.window import Window
Window.size = (300, 500)
class IntroScreen(Screen):
pass
class SuccessScreen(Screen):
pass
class SearchScreen(Screen):
pass
class MenuScreen(Screen):
pass
class GettingStartedScreen(Screen):
pass
class ProjectApp(MDApp):
def build(self):
self.sm = ScreenManager(transition=NoTransition())
self.sm.add_widget(IntroScreen(name="intro_screen"))
self.sm.add_widget(GettingStartedScreen(name="getting_started_screen"))
self.sm.add_widget(SuccessScreen(name="success_screen"))
self.sm.add_widget(SearchScreen(name='search_screen'))
self.sm.add_widget(MenuScreen(name="menu_screen"))
return self.sm
def change_screen(self, screen, *kwargs):
self.sm.current = "intro_screen"
self.sm.current = "getting_started_screen"
self.sm.current = "success_screen"
self.sm.current = "search_screen"
self.sm.current = "menu_screen"
self.sm.current = screen
ProjectApp().run()
这是我的 .kv 文件
ScreenManager:
<IntroScreen>
name: "intro_screen"
MDBottomAppBar:
MDToolbar:
icon: "plus"
type: 'bottom'
mode: 'center'
elevation: 8 #base
left_action_items: [["calendar-text", lambda x: x], ["account-group", lambda x: app.change_screen("success_screen")]]
right_action_items: [["magnify", lambda x: app.change_screen("search_screen")], ["menu", lambda x: app.change_screen("menu_screen")]]
<GettingStartedScreen>
name: "getting_started_screen"
FloatLayout:
MDCard:
orientation: 'vertical'
padding: 16
size_hint: None, None
size: "280dp", "360dp"
pos_hint: {"center_x": .5, "center_y": .6}
elevation: 8
orientation: 'vertical'
radius: 15
<MySwiper@MDSwiperItem> #I created the swiper class here, but its childern are below
# FitImage:
# source:
# radius: 18
<SuccessScreen>
name: "success_screen"
BoxLayout:
orientation: "vertical"
MDBottomAppBar:
MDToolbar:
id: success_screen_toolbar
icon: "magnify"
on_action_button: app.change_screen("search_screen")
type: 'bottom'
mode: 'center'
elevation: 8
left_action_items: [["calendar-text", lambda x: app.change_screen("intro_screen")], ["account-group", lambda x: x]]
right_action_items: [["magnify", lambda x: app.change_screen("search_screen")], ["menu", lambda x: app.change_screen("menu_screen")]]
MDSwiper:
size_hint_y: None
height: root.height - success_screen_toolbar.height - dp(40)
y: root.height - success_screen_toolbar.height - dp(10)
MySwiper:
FitImage:
source: "C:/Users/HP USER/Downloads/bella_baron.jpg"
radius: [20,]
MySwiper:
FitImage:
source: "C:/Users/HP USER/Downloads/bella_baron.jpg"
radius: [20,]
MySwiper:
FitImage:
source: "C:/Users/HP USER/Downloads/bella_baron.jpg"
radius: [20,]
<SearchScreen>
name: 'search_screen'
BoxLayout:
orientation: 'vertical'
MDBottomAppBar:
MDToolbar:
icon: "window-close"
type: "bottom"
mode: "center"
left_action_items: [["calendar-text", lambda x: app.change_screen("intro_screen")], ["account-group", lambda x: app.change_screen("success_screen")]]
right_action_items: [["magnify", lambda x: x], ["menu", lambda x: app.change_screen("menu_screen")]]
<MenuScreen>
name: "menu_screen"
BoxLayout:
orientation: "vertical"
MDBottomAppBar:
MDToolbar:
icon: "reload"
type: "bottom"
mode: "center"
left_action_items: [["calendar-text", lambda x: app.change_screen("intro_screen")], ["account-group", lambda x: app.change_screen("success_screen")]]
right_action_items: [["magnify", lambda x: app.change_screen("search_screen")], ["menu", lambda x: x]]
我之前在我的代码中创建了 MDSwiper 类,并将其子级放在我想要的位置,但我认为这不是问题。
我尝试使用 root.height - id.height
(在本例中为 success_screen_toolbar)为 MDSwipe 获得正确的位置,但仍然不正确.. 请问我该如何解决这个问题。非常感谢提前。