目录
- 行为
- 行为混入类
- 添加行为
ButtonBehaviorCodeNavigationBehaviorCompoundSelectionBehaviorCompoundSelectionBehavior.clear_selection()CompoundSelectionBehavior.deselect_node()CompoundSelectionBehavior.get_index_of_node()CompoundSelectionBehavior.get_selectable_nodes()CompoundSelectionBehavior.goto_node()CompoundSelectionBehavior.keyboard_selectCompoundSelectionBehavior.multiselectCompoundSelectionBehavior.nodes_order_reversedCompoundSelectionBehavior.page_countCompoundSelectionBehavior.right_countCompoundSelectionBehavior.scroll_countCompoundSelectionBehavior.select_node()CompoundSelectionBehavior.select_with_key_down()CompoundSelectionBehavior.select_with_key_up()CompoundSelectionBehavior.select_with_touch()CompoundSelectionBehavior.selected_nodesCompoundSelectionBehavior.text_entry_timeoutCompoundSelectionBehavior.touch_deselect_lastCompoundSelectionBehavior.touch_multiselectCompoundSelectionBehavior.up_count
CoverBehaviorDragBehaviorEmacsBehaviorFocusBehaviorFocusBehavior.focusFocusBehavior.focus_nextFocusBehavior.focus_previousFocusBehavior.focusedFocusBehavior.get_focus_next()FocusBehavior.get_focus_previous()FocusBehavior.hide_keyboard()FocusBehavior.ignored_touchFocusBehavior.input_typeFocusBehavior.is_focusableFocusBehavior.keyboardFocusBehavior.keyboard_modeFocusBehavior.keyboard_on_key_down()FocusBehavior.keyboard_on_key_up()FocusBehavior.keyboard_suggestionsFocusBehavior.show_keyboard()FocusBehavior.unfocus_on_touch
ToggleButtonBehaviorTouchRippleBehaviorTouchRippleBehavior.ripple_duration_inTouchRippleBehavior.ripple_duration_outTouchRippleBehavior.ripple_fade()TouchRippleBehavior.ripple_fade_from_alphaTouchRippleBehavior.ripple_fade_to_alphaTouchRippleBehavior.ripple_func_inTouchRippleBehavior.ripple_func_outTouchRippleBehavior.ripple_rad_defaultTouchRippleBehavior.ripple_scaleTouchRippleBehavior.ripple_show()
TouchRippleButtonBehavior
行为¶
在 1.8.0 版本加入.
行为混入类¶
该模块实现了可与现有基础控件“混合”的行为,这些行为可以像`混合`一样被添加到控件中。这些类的设计理念在于封装与特定类型控件相关联的属性和事件。
将这些属性和事件隔离在一个mixin类中,允许您为标准的Kivy小部件定义自己的实现,这些实现可以作为直接替换品。这意味着您可以根据需要重新样式化和重新定义小部件,而不会破坏兼容性:只要它们正确实现了这些行为,就可以简单地替换标准小部件。
添加行为¶
假设你想为 Image 添加 Button 的功能,你可以这样做:
class IconButton(ButtonBehavior, Image):
pass
这将为您提供一个继承自:class:`ButtonBehavior`的事件和属性的:class:`~kivy.uix.image.Image`实例。例如,*on_press*和*on_release*事件将在适当时触发:
class IconButton(ButtonBehavior, Image):
def on_press(self):
print("on_press")
或者在kv中:
IconButton:
on_press: print('on_press')
当然,您也可以绑定到行为类所提供的任何属性变化。
def state_changed(*args):
print('state changed')
button = IconButton()
button.bind(state=state_changed)
备注
行为类必须始终位于控件类_之前_。如果你不按此顺序指定继承,行为将无法正常工作,因为行为方法会被列在首位的类方法覆盖。
同样地,如果你将一个行为类与一个需要使用该行为类所定义方法的类结合,生成的类可能无法正常工作。例如,当将:class:`ButtonBehavior`与:class:`~kivy.uix.slider.Slider`结合时,两者都使用了:meth:`~kivy.uix.widget.Widget.on_touch_up`方法,生成的类可能无法正常工作。
在 1.9.1 版本发生变更: 各个行为类,原先集中在一个大的 behaviors.py 文件中,现已被拆分为 :mod:`~kivy.uix.behaviors` 模块下每个类单独一个文件。所有行为仍然在 :mod:`~kivy.uix.behaviors` 模块中导入,因此它们可以像以前一样访问(例如,from kivy.uix.behaviors import ButtonBehavior 和 from kivy.uix.behaviors.button import ButtonBehavior 都可以正常工作)。
- class kivy.uix.behaviors.ButtonBehavior(**kwargs)[源代码]¶
基类:
object这个 mixin 类提供了
Button的行为。更多信息请参阅按钮行为模块的文档。- 事件:
- on_press
当按钮被按下时触发。
- on_release
当按钮被释放时触发(即按下按钮的触摸/点击消失)。
- always_release¶
此属性决定当触摸释放(touch_up)发生在控件外部时,该控件是否触发 on_release 事件。
在 1.9.0 版本加入.
在 1.10.0 版本发生变更: 默认值现在为False。
always_release是一个BooleanProperty,默认值为 False。
- last_touch¶
包含按钮接收到的最后一个相关触摸。这可以在`on_press`或`on_release`中使用,以了解哪个触摸触发了该事件。
在 1.8.0 版本加入.
last_touch是一个ObjectProperty,默认值为 None。
- min_state_time¶
控件必须保持在 'down' 状态的最短时间周期。
在 1.9.1 版本加入.
min_state_time是一个浮点数,默认值为 0.035。该值取自Config。
- state¶
按钮的状态,必须是'normal'或'down'之一。只有当按钮当前被触摸/点击时,状态才为'down',否则为'normal'。
state是一个OptionProperty,默认值为 'normal'。
-
代码导航行为。修改TextInput中的导航行为,使其像IDE而非文字处理器那样工作。更多信息请参阅:mod:`代码导航行为模块 <kivy.uix.behaviors.codenavigation>`的文档。
在 1.9.1 版本加入.
- class kivy.uix.behaviors.CompoundSelectionBehavior(**kwargs)[源代码]¶
基类:
object选择行为 mixin 实现了由派生控件管理的可选中控件的键盘和触摸选择逻辑。有关更多信息,请参阅
复合选择行为模块的文档。在 1.9.0 版本加入.
- deselect_node(node)[源代码]¶
取消选中可能已选中的节点。
当控制器取消选择一个节点时,会调用此方法;也可以从外部直接调用以取消选择节点。派生的小部件应重写此方法,并在调用时将节点更改为其未选中状态。
- 参数:
- node
要取消选择的节点。
警告
如果该方法被覆盖,派生控件必须使用super调用它。
- get_index_of_node(node, selectable_nodes)[源代码]¶
(内部)返回 node 在
get_selectable_nodes()返回的 selectable_nodes 中的索引。
- get_selectable_nodes()[源代码]¶
(内部)返回可被选中的节点列表。派生控件可覆盖此方法以返回正确的列表。
该列表用于确定组选择时要选中的节点。例如,当按下Home键时,将选择列表中的最后一个元素;按下PageDown键时,将从当前选中节点在此列表中的位置开始,按负的:attr:`page_count`节点数移动(若按住Shift键,则添加)选择范围,依此类推。尽管如此,即使节点不在该列表中,它们仍可被选中。
备注
动态修改此列表是安全的,包括移除、添加或重新排列其元素。即使节点不在列表中,也可以被选中。从列表中移除的已选中节点将保持选中状态,直到调用
deselect_node()方法。警告
布局会以相反的顺序显示其子组件。也就是说,
children的内容是从右到左、从下到上显示的。因此,在内部,此函数返回的元素索引会被反转,以便默认情况下适用于大多数布局,从而确保最终结果一致,例如,home 虽然在视觉上会选择此列表中的最后一个元素,但在从上到下、从左到右计数时会选择第一个元素。如果不需要此行为,则应返回一个反转后的列表。默认返回
children。
- goto_node(key, last_node, last_node_idx)[源代码]¶
(内部)控制器使用此方法获取由键指示的位置处的节点。键可以是键盘输入,例如 pageup,或鼠标滚轮的滚动输入,例如 scrollup。'last_node' 是最后选中的节点,用于查找结果节点。例如,如果键是向上,则返回的节点是位于最后一个节点上方的一个节点。
它可以被派生的小部件覆盖。
- 参数:
- key
str,用于查找目标节点的字符串。它可以是任意键盘按键,也可以是鼠标的scrollup、scrolldown、scrollright和scrollleft字符串。如果字母快速连续输入,这些字母会在作为key传入前被合并,可用于查找关联字符串以这些字母开头的节点。
- last_node
最后选中的节点。
- last_node_idx
在
get_selectable_nodes()列表中,最后选中节点的缓存索引。如果列表未发生变化,则无需在该列表中查找 last_node 的索引,从而节省了查找时间。
- 返回:
元组,包含由键定位的节点及其在
get_selectable_nodes()列表中的索引。返回 (last_node, last_node_idx) 表示未找到节点。
- keyboard_select¶
决定键盘是否可用于选择。若为False,键盘输入将被忽略。
keyboard_select是一个BooleanProperty,默认值为 True。
- multiselect¶
决定是否可以选择多个节点。若启用,键盘的Shift和Ctrl键选择,可选地与触摸结合,例如,将能够以通常预期的方式选择多个部件。当此属性为False时,它优先于
touch_multiselect。multiselect是一个BooleanProperty,默认值为 False。
- nodes_order_reversed¶
(内部)指示节点自上而下显示的顺序是否与它们在
get_selectable_nodes()中的顺序相反(例如,children 属性的顺序与其显示顺序相反)。
- page_count¶
确定按下pageup(或pagedown)时,所选节点相对于上次所选节点位置向上或向下移动的量。
page_count是一个NumericProperty,默认值为 10。
- right_count¶
决定当键盘上的右(或左)箭头被按下时,所选节点相对于上一个选中节点位置向上或向下移动的量。
right_count是一个NumericProperty,默认值为 1。
- scroll_count¶
确定鼠标滚轮滚动时,所选节点相对于上一个所选节点位置上下移动的量。
right_count是一个NumericProperty,默认值为 0。
- select_node(node)[源代码]¶
选择节点。
当控制器选中一个节点时,会调用此方法;也可以从外部直接调用以选中节点。派生的小部件应重写此方法,并在被调用时将节点状态更改为选中状态。
- 参数:
- node
要选择的节点。
- 返回:
bool,若节点被选中则为True,否则为False。
警告
如果该方法被覆盖,派生控件必须使用super调用它。
- select_with_key_down(keyboard, scancode, codepoint, modifiers, **kwargs)[源代码]¶
处理按键按下事件。当按键按下用于选择时,会调用此方法。根据按下的键盘按键和配置,它可以从可选节点列表(
get_selectable_nodes())中选择或取消选择节点或节点范围。参数设置使其可以直接绑定到键盘的on_key_down事件。因此,当按键被按住时,像键盘那样重复调用它是安全的。
- 返回:
布尔值,如果按键被使用则为True,否则为False。
- select_with_key_up(keyboard, scancode, **kwargs)[源代码]¶
(内部)处理按键释放。当派生控件检测到
select_with_key_down()返回 True 的按键被释放时,必须调用此方法。这些参数的设计使其可以直接绑定到键盘的on_key_up事件上。
- 返回:
bool,如果按键释放被使用则为True,否则为False。
- select_with_touch(node, touch=None)[源代码]¶
(内部)处理节点上的触摸事件。当节点被触摸并用于选择时,派生控件应调用此方法。根据按下的键盘按键和配置,它可能会选择或取消选择此节点以及可选中节点列表中的其他节点,参见
get_selectable_nodes()。- 参数:
- node
接收触摸的节点。对于滚动类型的触摸,该值可能为 None。
- touch
可选参数,触摸事件。默认为 None。
- 返回:
bool,若触摸已被使用则为True,否则为False。
- selected_nodes¶
所选节点的列表。
备注
可以连续选择多个节点,例如使用键盘操作。在监听
selected_nodes时,需要注意这一点。selected_nodes是一个ListProperty,默认值为空列表 []。它是只读的,不应被修改。
- text_entry_timeout¶
当快速连续输入字符时(即与上一个字符的时间差小于
text_entry_timeout),这些按键会被拼接起来,并将合并后的文本作为goto_node()的 key 参数传递。在 1.10.0 版本加入.
- touch_deselect_last¶
当
multiselect或touch_multiselect为 False 时,决定最后一个选中的节点是否可以被取消选中。在 1.10.0 版本加入.
touch_deselect_last是一个BooleanProperty,在移动设备上默认为 True,在桌面平台上默认为 False。
- touch_multiselect¶
一种特殊的触摸模式,用于决定由
select_with_touch()处理的触摸事件是将当前触摸的节点添加到选中集合中,还是在添加节点前清除选中集合。此模式允许通过简单触摸多个节点来实现多选。这与
multiselect不同,因为当其为 True 时,仅触摸一个未选中的节点就会将其选中,即使未按下 ctrl 键也是如此。然而,如果其为 False,则在multiselect为 True 时,必须按下 ctrl 键才能添加到选中项中。备注
:属性 multiselect,当设为 False 时,将禁用 touch_multiselect。
touch_multiselect是一个BooleanProperty,默认值为 False。
- up_count¶
决定当键盘上的上(或下)箭头被按下时,所选节点相对于上一个选中节点位置向上或向下移动的距离。
up_count是一个NumericProperty,默认值为 1。
- class kivy.uix.behaviors.CoverBehavior(**kwargs)[源代码]¶
基类:
objectCoverBehavior mixin 提供了一种渲染方式,使纹理覆盖整个控件大小,同时保持原始纹理的宽高比。
在 1.10.0 版本加入.
- cover_pos¶
宽高比感知纹理的位置。在
CoverBehavior.calculate_cover中计算得出。cover_pos是一个ListProperty,默认值为 [0, 0]。
- cover_size¶
宽高比感知纹理的尺寸。在
CoverBehavior.calculate_cover中计算得出。cover_size是一个ListProperty,默认值为 [0, 0]。
- reference_size¶
用于宽高比近似计算的参考尺寸。
reference_size是一个ListProperty,默认值为 []。
- class kivy.uix.behaviors.DragBehavior(**kwargs)[源代码]¶
基类:
objectDragBehavior mixin 提供了拖拽行为。当与一个部件结合时,在由
drag_rectangle定义的矩形内进行拖拽将移动该部件。更多信息请参阅拖拽行为模块的文档。在 1.8.0 版本加入.
- drag_distance¶
拖动
DragBehavior之前需要移动的距离,单位为像素。一旦达到该距离,DragBehavior将开始拖动,并且不会向子组件派发触摸事件。建议您根据目标设备屏幕的 dpi 来设定此值。drag_distance是一个NumericProperty,默认值等于用户Config中定义的 `scroll_distance`(默认20像素)。
- drag_rect_height¶
允许拖拽的轴对齐边界矩形的高度。
drag_rect_height是一个NumericProperty,默认值为 100。
- drag_rect_width¶
允许拖拽的轴对齐边界矩形的宽度。
drag_rect_width是一个NumericProperty,默认值为 100。
- drag_rect_x¶
允许拖动的轴对齐边界矩形的X位置(以窗口坐标表示)。
drag_rect_x是一个NumericProperty,默认值为 0。
- drag_rect_y¶
允许拖动的轴对齐边界矩形的Y坐标位置(以窗口坐标表示)。
drag_rect_Y是一个NumericProperty,默认值为 0。
- drag_rectangle¶
允许拖动的轴对齐边界矩形的位置和大小。
drag_rectangle是一个ReferenceListProperty,由 (drag_rect_x,drag_rect_y,drag_rect_width,drag_rect_height) 属性组成。
- drag_timeout¶
允许触发
drag_distance的超时时间,单位为毫秒。如果用户在此超时时间内未移动drag_distance,则拖拽将被禁用,触摸事件将分发给子组件。drag_timeout是一个NumericProperty,默认值为用户Config中定义的 `scroll_timeout`(默认55毫秒)。
- class kivy.uix.behaviors.EmacsBehavior(**kwargs)[源代码]¶
基类:
object一个 mixin,为
TextInput控件启用 Emacs 风格的键盘快捷键。更多信息请参阅Emacs 行为模块的文档。在 1.9.1 版本加入.
- key_bindings¶
字符串名称,用于确定与
TextInput一起使用的键绑定类型。这允许以编程方式为继承自EmacsBehavior的控件启用或禁用 Emacs 键绑定。如果该值不是'emacs',则 Emacs 绑定将被禁用。使用'default'可切换到 TextInput 的默认键绑定。key_bindings是一个StringProperty,默认值为'emacs'。在 1.10.0 版本加入.
- class kivy.uix.behaviors.FocusBehavior(**kwargs)[源代码]¶
基类:
object提供键盘焦点行为。当与其他FocusBehavior控件结合使用时,它允许通过按Tab键在它们之间循环焦点。更多信息请参阅:mod:焦点行为模块文档 <kivy.uix.behaviors.focus>。
在 1.9.0 版本加入.
- focus¶
实例当前是否具有焦点。
将其设为True将绑定和/或请求键盘,输入将被转发到该实例。设为False将解除绑定和/或释放键盘。对于给定的键盘,只有一个控件能拥有焦点,因此聚焦一个控件会自动取消另一个持有焦点的实例的焦点。
使用软件键盘时,请参考
softinput_mode属性来确定键盘显示的处理方式。focus是一个BooleanProperty,默认值为 False。
- focus_next¶
当按下Tab键且此实例拥有焦点时,要获取焦点的:class:FocusBehavior`实例,如果该值不为`None`或`StopIteration。
当按下 Tab 键时,焦点会在所有通过
focus_next链接且可聚焦的FocusBehavior控件之间循环。如果focus_next为 None,则会遍历子控件列表以查找下一个可聚焦的控件。最后,如果focus_next是 StopIteration 类,焦点将不会向前移动,而是在此处结束。focus_next是一个ObjectProperty,默认值为 None。
- focus_previous¶
当在此实例上按下shift+tab时,要获取焦点的:class:`FocusBehavior`实例,如果为None或`StopIteration`则忽略。
当按下shift+tab时,焦点会循环遍历所有通过:attr:focus_previous`链接且可聚焦的:class:`FocusBehavior`控件。如果:attr:`focus_previous`为`None,则改为遍历子控件树以查找上一个可聚焦的控件。最后,如果:attr:`focus_previous`是`StopIteration`类,焦点将不会向后移动,而是在此处结束。
focus_previous是一个ObjectProperty,默认值为 None。
- focused¶
focus 的别名。
focused是一个BooleanProperty,默认值为 False。
- get_focus_next()[源代码]¶
使用
focus_next或children返回下一个可聚焦的控件,其顺序与使用tab键向前切换焦点时的顺序相同。
- get_focus_previous()[源代码]¶
返回上一个可聚焦的控件,使用
focus_previous或children,其顺序与同时按下tab+shift键时一致。
- ignored_touch = []¶
不应被用于取消焦点的触摸列表。在`on_touch_up`之后,如果配置的键盘模式不是多模式,那么不在:attr:`ignored_touch`中的每个触摸都将取消所有聚焦部件的焦点。用于聚焦的可聚焦部件上的触摸会自动添加到此列表中。
示例用法:
class Unfocusable(Widget): def on_touch_down(self, touch): if self.collide_point(*touch.pos): FocusBehavior.ignored_touch.append(touch)
请注意,你需要将其作为类来访问,而不是作为实例变量。
- input_type¶
请求的输入键盘类型。
在 1.8.0 版本加入.
在 2.1.0 版本发生变更: 将默认值从 text 改为 null。在选项中添加了 null。
警告
由于默认值已更改,您可能需要在代码中调整 input_type。
input_type是一个OptionsProperty,默认值为 'null'。可选值包括 'null'、'text'、'number'、'url'、'mail'、'datetime'、'tel' 或 'address'。
- is_focusable¶
实例是否可以获得焦点。如果已获得焦点,当设置为False时,它将失去焦点。
is_focusable是一个BooleanProperty,在桌面平台上默认为 True(即config中的 desktop 为 True),否则默认为 False。
- keyboard¶
聚焦时绑定的键盘(或绑定到部件的键盘)。
当为None时,每当控件获得或失去焦点时,会请求并释放键盘。如果不为None,则必须是一个键盘,该键盘会在控件获得或失去焦点时与之绑定和解绑。这仅在存在多个键盘时才有用,因此当只有一个键盘可用时,建议将其设置为None。
如果存在多个键盘,每当一个实例获得焦点时,若当前没有键盘(None),则会请求一个新的键盘。除非其他实例失去焦点(例如,使用了Tab键),否则会出现一个新的键盘。当不希望出现这种情况时,可以使用`keyboard`属性。例如,如果有两个用户分别使用两个键盘,则可以将每个键盘分配给`FocusBehavior`的不同实例组,确保在每个组内,只有一个`FocusBehavior`会获得焦点,并从正确的键盘接收输入。有关键盘模式的更多信息,请参阅:mod:~kivy.config`中的`keyboard_mode。
键盘与焦点行为
使用键盘时,有几个重要的默认行为需要您牢记。
当Config的`keyboard_mode`设置为multi时,每个新的触摸事件被视为不同用户的触摸,并会在点击可聚焦元素时设置焦点(如果点击了可聚焦元素),同时使用新的键盘。已聚焦的元素不会失去焦点(即使触摸了不可聚焦的控件)。
如果设置了 keyboard 属性,那么当实例获得焦点时,将使用该键盘。如果通过
focus_next和focus_previous链接了具有不同键盘的控件,则在它们之间进行 Tab 切换时,不同的键盘会依次变为活动状态。因此,通常不建议链接分配了不同键盘的实例。当控件获得焦点时,将其键盘设置为None会移除其键盘,但该控件随后会立即尝试获取另一个键盘。要移除其键盘,应将其
focus属性设置为False。在使用软件键盘时(常见于移动设备和触摸设备),键盘的显示行为由
softinput_mode属性决定。您可以使用此属性来确保焦点控件不被遮挡或隐藏。
keyboard是一个AliasProperty,默认值为 None。
- keyboard_mode¶
决定键盘可见性的管理方式。'auto' 将采用标准行为,即根据焦点自动显示/隐藏。'managed' 则需要手动设置键盘可见性,或调用辅助函数
show_keyboard()和hide_keyboard()。keyboard_mode是一个OptionsProperty,默认值为 'auto'。它可以是 'auto' 或 'managed' 中的一个。
- keyboard_on_key_down(window, keycode, text, modifiers)[源代码]¶
当实例获得焦点时,绑定到键盘的方法。
当实例获得焦点时,此方法会绑定到键盘,并在每次按键输入时被调用。其参数与
kivy.core.window.WindowBase.on_key_down()相同。在派生组件中重写该方法时,应调用super以启用Tab键循环。如果派生组件希望将Tab键用于自身目的,则可以在处理字符后调用super(如果它不希望消耗Tab键)。
与其他键盘函数类似,如果按键已被消耗,则应返回True。
- keyboard_on_key_up(window, keycode)[源代码]¶
当实例获得焦点时,绑定到键盘的方法。
当实例获得焦点时,此方法会绑定到键盘,并在每次输入释放时被调用。其参数与
kivy.core.window.WindowBase.on_key_up()相同。在派生组件中重写该方法时,应调用`super`以支持按Escape键取消焦点。若派生组件希望将Escape键用于自身用途,可在处理完该字符后调用`super`(若其不希望消费该Escape键)。
- keyboard_suggestions¶
如果为 True,则在键盘上方提供自动建议。这仅在
input_type设置为 text、url、mail 或 address 时有效。警告
在Android上,keyboard_suggestions`依赖于`InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS`来生效,但有些键盘会忽略这个标志。如果你想在Android上完全禁用建议,可以将`input_type`设置为`null,这将请求输入法以受限的“生成按键事件”模式运行。
在 2.1.0 版本加入.
keyboard_suggestions是一个BooleanProperty,默认值为 True。
- unfocus_on_touch¶
实例在被点击外部时是否应失去焦点。
当用户点击一个具有焦点感知能力且与此控件共享同一键盘(在只有一个键盘的情况下)的控件时,随着其他控件获得焦点,此控件将失去焦点。此外,如果此属性为`True`,点击除该控件以外的任何控件,都会从此控件上移除焦点。
unfocus_on_touch是一个BooleanProperty,如果Config中的 keyboard_mode 为 'multi' 或 'systemandmulti',则默认值为 False,否则默认值为 True。
- class kivy.uix.behaviors.ToggleButtonBehavior(**kwargs)[源代码]¶
-
这个 mixin 类提供了
togglebutton的行为。更多信息请参阅togglebutton 行为模块的文档。在 1.8.0 版本加入.
- allow_no_selection¶
这指定了组中的小部件是否允许无选择,即所有项都可以被取消选中。
在 1.9.0 版本加入.
allow_no_selection是一个BooleanProperty,默认值为 True。
- static get_widgets(groupname)[源代码]¶
返回特定组中包含的控件列表。如果该组不存在,将返回一个空列表。
备注
务必释放此方法的返回值!持有这些任何控件的引用可能会阻止它们被垃圾回收。如有疑问,请执行以下操作:
l = ToggleButtonBehavior.get_widgets('mygroup') # do your job del l
警告
你之前删除的一些控件可能仍留在列表中。垃圾回收器可能需要先释放其他对象,才能将它们清除。
- group¶
按钮的组。如果为 None,则不使用组(按钮将是独立的)。如果指定了,:attr:`group` 必须是一个可哈希对象,比如字符串。在一个组中,只能有一个按钮处于“按下”状态。
group是一个ObjectProperty,默认值为 None。
- class kivy.uix.behaviors.TouchRippleBehavior(**kwargs)[源代码]¶
基类:
object触摸波纹行为。
应作为mixin用于widget类上。
涟漪效果不会自动触发,具体实现需要手动调用
ripple_show()和ripple_fade()。示例¶
这里我们创建了一个Label,它在交互时渲染触摸波纹动画::
class RippleLabel(TouchRippleBehavior, Label): def __init__(self, **kwargs): super(RippleLabel, self).__init__(**kwargs) def on_touch_down(self, touch): collide_point = self.collide_point(touch.x, touch.y) if collide_point: touch.grab(self) self.ripple_show(touch) return True return False def on_touch_up(self, touch): if touch.grab_current is self: touch.ungrab(self) self.ripple_fade() return True return False
- ripple_duration_in¶
显示覆盖层所需的动画持续时间。
ripple_duration_in是一个NumericProperty,默认值为 0.5。
- ripple_duration_out¶
覆盖层淡入淡出所需的动画持续时间。
ripple_duration_out是一个NumericProperty,默认值为 0.2。
- ripple_fade_from_alpha¶
波纹颜色动画起始时的Alpha通道。
ripple_fade_from_alpha是一个NumericProperty,默认值为 0.5。
- ripple_fade_to_alpha¶
动画目标所指向的波纹颜色的Alpha通道。
ripple_fade_to_alpha是一个NumericProperty,默认值为 0.8。
- ripple_func_in¶
显示覆盖层的动画回调。
ripple_func_in是一个StringProperty,默认值为 in_cubic。
- ripple_func_out¶
隐藏覆盖层的动画回调。
ripple_func_out是一个StringProperty,默认值为 out_quad。
- ripple_rad_default¶
动画开始的默认半径。
ripple_rad_default是一个NumericProperty,默认值为 10。
- ripple_scale¶
动画叠加层的最大缩放比例,根据装饰控件的最大(宽度/高度)计算得出。
ripple_scale是一个NumericProperty,默认值为 2.0。
- class kivy.uix.behaviors.TouchRippleButtonBehavior(**kwargs)[源代码]¶
-
这个 mixin 类提供了与
ButtonBehavior类似的行为,但以触摸涟漪动画替代按钮按下/释放作为视觉效果。- 事件:
- on_press
当按钮被按下时触发。
- on_release
当按钮被释放时触发(即按下按钮的触摸/点击消失)。
- always_release¶
此属性决定当触摸释放(touch_up)发生在控件外部时,该控件是否触发 on_release 事件。
always_release是一个BooleanProperty,默认值为 False。
- last_touch¶
包含按钮接收到的最后一个相关触摸。这可以在`on_press`或`on_release`中使用,以了解哪个触摸触发了该事件。
last_touch是一个ObjectProperty,默认值为 None。
- 按钮行为
- 代码导航行为
- 复合选择行为
- 复合选择概念
- 选择机制
- 示例
CompoundSelectionBehaviorCompoundSelectionBehavior.clear_selection()CompoundSelectionBehavior.deselect_node()CompoundSelectionBehavior.get_index_of_node()CompoundSelectionBehavior.get_selectable_nodes()CompoundSelectionBehavior.goto_node()CompoundSelectionBehavior.keyboard_selectCompoundSelectionBehavior.multiselectCompoundSelectionBehavior.nodes_order_reversedCompoundSelectionBehavior.page_countCompoundSelectionBehavior.right_countCompoundSelectionBehavior.scroll_countCompoundSelectionBehavior.select_node()CompoundSelectionBehavior.select_with_key_down()CompoundSelectionBehavior.select_with_key_up()CompoundSelectionBehavior.select_with_touch()CompoundSelectionBehavior.selected_nodesCompoundSelectionBehavior.text_entry_timeoutCompoundSelectionBehavior.touch_deselect_lastCompoundSelectionBehavior.touch_multiselectCompoundSelectionBehavior.up_count
- 覆盖行为
- 拖拽行为
- Emacs 行为
- 焦点行为
- 管理焦点
- 初始化焦点
FocusBehaviorFocusBehavior.focusFocusBehavior.focus_nextFocusBehavior.focus_previousFocusBehavior.focusedFocusBehavior.get_focus_next()FocusBehavior.get_focus_previous()FocusBehavior.hide_keyboard()FocusBehavior.ignored_touchFocusBehavior.input_typeFocusBehavior.is_focusableFocusBehavior.keyboardFocusBehavior.keyboard_modeFocusBehavior.keyboard_on_key_down()FocusBehavior.keyboard_on_key_up()FocusBehavior.keyboard_suggestionsFocusBehavior.show_keyboard()FocusBehavior.unfocus_on_touch
- Kivy 命名空间
- ToggleButton 行为
- 触摸波纹
TouchRippleBehaviorTouchRippleBehavior.ripple_duration_inTouchRippleBehavior.ripple_duration_outTouchRippleBehavior.ripple_fade()TouchRippleBehavior.ripple_fade_from_alphaTouchRippleBehavior.ripple_fade_to_alphaTouchRippleBehavior.ripple_func_inTouchRippleBehavior.ripple_func_outTouchRippleBehavior.ripple_rad_defaultTouchRippleBehavior.ripple_scaleTouchRippleBehavior.ripple_show()
TouchRippleButtonBehavior