python - KivyMD - MDRectangleFlatButton - 按钮阴影动画太慢
问题描述
请帮我弄清楚如何加速 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")
我得到这个动画滞后: 按钮动画
所以作为行动步骤:
- 打开抽屉;
- 从下方菜单中选择一个选项
- 抽屉关闭,但屏幕上还有剩余的按钮动画。
谢谢!
解决方案
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()
推荐阅读
- scala - 在任意 scala 对象中调用私有方法
- docker - 与 docker-compose.yml 一起使用时未执行 Dockerfile 中的命令
- javascript - 像时刻一样从对象格式化 Luxon 日期
- javascript - 有没有办法使用 Puppeteer 定位特定元素并在将 html 转换为 pdf 时保留 CSS?
- python - 将库导入 Python 文件
- postgresql - postgresql/pgAdmin - 接受 start_date 和 end_date 参数作为查询运行的输入
- visual-studio-code - 该进程试图写入一个不存在的管道
- python - 调试 Python 时调用 Stack empty
- python - 减少创建 BeautifulSoup 对象时的开销
- amazon-aurora - Postgres (AWS Aurora) 未强制执行唯一索引/约束