【发布时间】:2022-12-26 19:46:29
【问题描述】:
I found that whenever I have multiple screens (managed by the MDScreenManager) and I switch between them, certain properties (the elevation of the cards on the screens, or the changes on the primarly palette) are lost.
-
Switch to dark mode (theme and palette changes working fine):
-
Change to the second screen (in dark or light mode, doesn't matter):
-
Come back to the first creen (I already lost the MDCard elevation):
-
When switching between themes, the primarly palette has been lost on the dark mode:
This is my main.py:
from kivy.config import Config Config.set('graphics', 'fullscreen', 0) Config.set('graphics', 'window_state', 'maximized') from kivymd.app import MDApp from kivy.lang import Builder from kivymd.uix.screenmanager import MDScreenManager from kivymd.uix.screen import MDScreen from kivy.core.window import Window class Home(MDScreen): pass class Settings_1(MDScreen): pass Window.size = (800, 480) sm = MDScreenManager() sm.add_widget(Home(name='home')) sm.add_widget(Settings_1(name='settings_1')) class Test(MDApp): dialog = None def build(self): self.theme_cls.primary_palette = "Blue" self.theme_cls.theme_style = "Light" self.theme_cls.theme_style_switch_animation = True self.theme_cls.material_style = "M3" return Builder.load_file('kivy.kv') def on_checkbox_active(self, value): if not value.active: self.theme_cls.primary_palette = "Gray" self.theme_cls.theme_style = "Dark" else: self.theme_cls.primary_palette = "Blue" self.theme_cls.theme_style = "Light" return if __name__ == "__main__": print('Starting') Test().run()and this the kivy.kv file:
ScreenManager: Home: Settings_1: <Home>: name:'home' MDCard: elevation: 3 orientation: 'vertical' adaptive_height: True radius: 20 pos_hint: {"center_x": .5, "center_y": .5} size_hint: 0.3, 0.3 md_bg_color: app.theme_cls.bg_darkest padding: dp(5), dp(10) spacing: dp(10) MDLabel: text: 'Label 1' halign: 'center' pos_hint: {'center_x': 0.5,'center_y':0.8} MDSeparator: MDSwitch: active: True icon_active: "white-balance-sunny" icon_inactive: "moon-waning-crescent" on_active: app.on_checkbox_active(self) theme_text_color: app.theme_cls.theme_style pos_hint: {'center_x': 0.5,'center_y':0.5} MDSeparator: MDRectangleFlatButton: text: 'Next screen' pos_hint: {'center_x': 0.5,'center_y':0.2} on_press: root.manager.current ='settings_1' root.manager.transition.direction = 'left' <Settings_1>: name:'settings_1' MDCard: elevation: 3 orientation: 'vertical' adaptive_height: True radius: 20 pos_hint: {"center_x": .5, "center_y": .5} size_hint: 0.3, 0.3 md_bg_color: app.theme_cls.bg_darkest padding: dp(5), dp(10) spacing: dp(10) MDLabel : text: 'Label 2' halign: 'center' MDRectangleFlatButton: text: 'Previous screen' pos_hint: {'center_x': 0.5,'center_y':0.2} on_press: root.manager.current ='home' root.manager.transition.direction = 'right'
【问题讨论】:
标签: python kivy kivy-language kivymd