tkflu.designs.animation · 动画参数
动画参数与缓动函数。
控制主题切换等过渡动画的帧数、帧间隔与缓动曲线。
.. code-block:: python
from tkflu import set_animation_steps, set_animation_step_time
set_animation_steps(5) # 5 帧
set_animation_step_time(20) # 每帧 20ms
set_theme_easing("ease_in_out") # 缓动曲线(默认)
两者都设为 0 即关闭动画(默认就是关闭)。
单控件动画的"暂停开关"
:func:~tkflu.theme_transition.run_theme_transition 会把整棵控件树的颜色插值
放到同一条时间轴上统一驱动。那一刻它必须先"静默地"把每个组件的目标配色写进
attributes(否则算不出插值起点),此时各个组件自己的 _theme() 动画
必须让路,否则同一次换肤会排出两套互相打架的帧。
:func:suspended_widget_animation 就是那个让路开关:它在上下文里把
:func:get_animation_steps / :func:get_animation_step_time 都读成 0,
于是所有组件的 _theme() 自然退化成"直接写目标值",一行组件代码都不用改。
ease_in(t)
慢起快落。
源代码位于: tkflu\designs\animation.py
56 57 58 | |
ease_in_out(t)
两头慢、中间快(cubic)。换肤的默认曲线。
源代码位于: tkflu\designs\animation.py
66 67 68 69 70 | |
ease_out(t)
快起慢落。
源代码位于: tkflu\designs\animation.py
61 62 63 | |
ease_out_back(t)
末端轻微过冲的弹回曲线,想"更活泼"时可以换它。
源代码位于: tkflu\designs\animation.py
73 74 75 76 77 | |
easing_function(name)
按名字取缓动函数;名字不认识时退回默认曲线而不是抛异常。
理由和 :meth:tkflu.button.FluButton.theme 里那个"未知 style 退回默认值"
的约定一致:一次换肤不该因为一个拼错的曲线名整趟崩掉。
:param name: 曲线名,或一个可调用对象(原样返回)
源代码位于: tkflu\designs\animation.py
98 99 100 101 102 103 104 105 106 107 108 109 110 | |
easing_names()
所有可用的缓动名字(排序后)。
源代码位于: tkflu\designs\animation.py
93 94 95 | |
get_theme_easing()
当前主题过渡的缓动曲线名。
源代码位于: tkflu\designs\animation.py
118 119 120 | |
linear(t)
匀速。老实现用的就是它。
源代码位于: tkflu\designs\animation.py
51 52 53 | |
set_theme_easing(name)
设置主题过渡的缓动曲线,取值见 :data:EASINGS。
源代码位于: tkflu\designs\animation.py
113 114 115 | |
suspended_widget_animation()
在这个上下文里,各组件自己的 _theme() 动画全部让路。
:func:~tkflu.theme_transition.run_theme_transition 用它来"静默地"把
目标配色写进各组件,从而拿到干净的插值起点。
.. note:: 用计数而不是布尔量:统一过渡本身也可能被嵌套调用(窗口 → 面板 → 菜单栏), 布尔量会在内层退出时把外层的暂停提前解除。
源代码位于: tkflu\designs\animation.py
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | |
widget_animation_suspended()
当前是否处于"让路"状态。
源代码位于: tkflu\designs\animation.py
149 150 151 | |