我目前正在开发一个具有多个屏幕的应用程序(为此我使用了 ScreenManager)。然而,有一个称为 TravelManagerWindow 的屏幕,它也有一个 MDBottomNavigation 小部件,一个 MDBottomNavigationItem(或屏幕)将用于旅行费用请求,另一个用于在旅行后提供此类费用的证据。
问题是,一旦我进入我的 TravelManagerWindow,MDBottomNavigation 小部件的选项卡位置不正确。不过,在我手动调整整个应用程序窗口的大小后,选项卡位置会更改为所需的位置。有没有办法确保标签从一开始就正确呈现?我一直在寻找解决方案,但仍然无法解决我的问题。
相关代码如下:
<TravelManagerWindow>:
name:'travelManager'
on_enter: root.set_expansion_panel()
on_enter: root.set_expansion_panel_2()
BoxLayout:
orientation: 'vertical'
MDBottomNavigation:
id: bottom_Navigation
MDBottomNavigationItem:
text: 'Solicitud de Gastos'
name: 'solicitudes'
halign:'center'
icon: 'plus'
MDBottomNavigationItem:
text: 'Comprobacion de Gastos'
name: 'comprobacion'
halign:'center'
icon: 'format-list-checks'
编辑
我包括了一个最小的可重现示例。代码如下:
蟒蛇文件:
from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen
class LoginWindow(Screen):
pass
class BottomNavigationWindow(Screen):
pass
class WindowManager(ScreenManager):
pass
ScreenManager().add_widget(LoginWindow(name='login'))
ScreenManager().add_widget(BottomNavigationWindow(name='BottomNav'))
class reprod_example2(MDApp):
def build(self):
self.theme_cls.primary_palette = "Teal"
return WindowManager()
if __name__ == "__main__":
reprod_example2().run()
KV 文件:
<WindowManager>:
LoginWindow:
BottomNavigationWindow:
<LoginWindow>:
name: 'login'
MDRaisedButton:
text: 'Enter'
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
size_hint: None, None
on_release:
root.manager.transition.direction = 'up'
root.manager.current = 'BottomNav'
<BottomNavigationWindow>:
name:'BottomNav'
MDBoxLayout:
MDBottomNavigation:
MDBottomNavigationItem:
text: 'Page 1'
name: 'page1'
MDLabel:
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
text: 'This is page one'
MDBottomNavigationItem:
text: 'Page 2'
name: 'page2'
MDLabel:
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
text: 'This is page two'
在我最小的可重现示例中,我发现了相同的错误。MDBottomNavigation 定位不正确。手动重塑窗口可以解决问题。但是,我希望从一开始就正确绘制 MDBottom 导航。
任何建议都非常感谢提前非常感谢。