0

请帮我弄清楚如何加速 KivyMD MDRectangleFlatButton 的按钮阴影动画。根据文档,我没有可以更改的直接参数。

蟒蛇文件:

from kivy.app import App
from kivymd.theming import ThemeManager
from kivymd.app import MDApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen

class ContentNavigationDrawer(BoxLayout):
    pass

class Screen2(Screen):
    pass

sm = ScreenManager()
sm.add_widget(Screen2(name='s2'))

class MainApp(MDApp):
    def build(self):
        pass
    

MainApp().run()

.kv 文件:

Screen:
    NavigationLayout:

        ScreenManager:
            id: screen_manager
            Screen:
                name: 'menu'
                BoxLayout:
                    orientation: 'vertical'

                    MDToolbar:
                        title: "Navigation Drawer"
                        elevation: 10
                        left_action_items: [['menu', lambda x: nav_drawer.set_state("toggle")]]

                    Widget:
            
            Screen2:
                name: 's2'
                BoxLayout:
                    orientation: 'vertical'

                    MDToolbar:
                        title: "Screen2"
                        elevation: 10
                        left_action_items: [['menu', lambda x: nav_drawer.set_state("toggle")]]

                    Widget:
                    MDLabel:
                        text: 'Profile'
                        halign: 'center'

        MDNavigationDrawer:
            id: nav_drawer
            ContentNavigationDrawer:
                BoxLayout:
                    orientation: 'vertical'
                    MDLabel:
                        text: 'App'
                        font_style: 'H1'                  
                    MDRectangleFlatButton:
                        text: 'Select 1'
                        pos_hint: {'center_x':0.5,'center_y':0.1}
                        on_release: 
                            screen_manager.current = 's2'
                            nav_drawer.set_state("toggle")
                    

                    MDRectangleFlatButton:
                        text: 'Main'
                        pos_hint: {'center_x':0.5,'center_y':0.1}
                        on_release: 
                            screen_manager.current = 'menu'
                            nav_drawer.set_state("toggle")

我得到这个动画滞后: 按钮动画

所以作为行动步骤:

  • 打开抽屉;
  • 从下方菜单中选择一个选项
  • 抽屉关闭,但屏幕上还有剩余的按钮动画。

谢谢!

4

1 回答 1

0
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager

from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.screen import MDScreen

KV = """
#:import Clock kivy.clock.Clock


MDScreen:

    NavigationLayout:

        ScreenManager:
            id: screen_manager
            
            MDScreen:
                name: 'menu'
                
                MDToolbar:
                    title: "Navigation Drawer"
                    elevation: 10
                    left_action_items: [['menu', lambda x: nav_drawer.set_state("toggle")]]
                    pos_hint: {"top": 1}
            
            Screen2:
                name: 's2'

                MDToolbar:
                    title: "Screen2"
                    elevation: 10
                    left_action_items: [['menu', lambda x: nav_drawer.set_state("toggle")]]
                    pos_hint: {"top": 1}
                
                MDLabel:
                    text: 'Profile'
                    halign: 'center'

        MDNavigationDrawer:
            id: nav_drawer
            
            ContentNavigationDrawer:
                orientation: 'vertical'
                adaptive_height: True
                pos_hint: {"top": 1}
                spacing: "12dp"
                
                MDLabel:
                    text: 'App'
                    font_style: 'H1'
                    size_hint_y: None
                    height: self.texture_size[1]  
                                   
                MDRectangleFlatButton:
                    text: 'Select 1'
                    pos_hint: {'center_x':0.5,'center_y':0.1}
                    on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager, nav_drawer, "s2"), .3)
                

                MDRectangleFlatButton:
                    text: 'Main'
                    pos_hint: {'center_x':0.5,'center_y':0.1}
                    on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager, nav_drawer, "menu"), .3)
"""


class ContentNavigationDrawer(MDBoxLayout):
    pass


class Screen2(MDScreen):
    pass


sm = ScreenManager()
sm.add_widget(Screen2(name='s2'))


class MainApp(MDApp):
    def build(self):
        return Builder.load_string(KV)

    def set_screen(self, manager, nav_drawer, name_screen):
        manager.current = name_screen
        nav_drawer.set_state("toggle")


MainApp().run()
于 2020-08-11T17:12:25.773 回答