KivyMD-MDRectangleFlatButton-按钮阴影动画太慢

问题描述

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

python文件:

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")

我的动画滞后了: Button Animation

因此,作为操作步骤:

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

谢谢!

解决方法

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,"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,name_screen):
        manager.current = name_screen
        nav_drawer.set_state("toggle")


MainApp().run()

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...