KivyMD - MDRectangleFlatButton - 按钮阴影动画太慢
KivyMD - MDRectangleFlatButton - button shadow animation too slow
请帮我弄清楚如何加速 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
所以作为操作步骤:
- 打开抽屉;
- select 下方菜单中的选项之一
- 抽屉关闭,但屏幕上还有剩余的按钮动画。
谢谢!
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()
请帮我弄清楚如何加速 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
所以作为操作步骤:
- 打开抽屉;
- select 下方菜单中的选项之一
- 抽屉关闭,但屏幕上还有剩余的按钮动画。
谢谢!
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()