模态视图

在 1.4.0 版本加入.

: ModalView 组件用于创建模态视图。默认情况下,该视图将覆盖整个“主”窗口。

请记住,Widget 的默认大小是 size_hint=(1, 1)。如果你不希望视图全屏显示,可以使用小于 1 的 size_hint 值(例如 size_hint=(.8, .8)),或者禁用 size_hint 并使用固定尺寸属性。

示例

一个简单的400x400 Hello world视图示例:

view = ModalView(size_hint=(None, None), size=(400, 400))
view.add_widget(Label(text='Hello world'))

默认情况下,点击视图外部将关闭它。如果你不希望这样,可以将 ModalView.auto_dismiss 设置为 False:

view = ModalView(auto_dismiss=False)
view.add_widget(Label(text='Hello world'))
view.open()

要手动关闭/退出视图,请使用 ModalView 实例的 ModalView.dismiss() 方法:

view.dismiss()

: ModalView.open()ModalView.dismiss() 都是可绑定的。这意味着你可以直接将函数绑定到一个动作上,例如绑定到按钮的 on_press 事件:

# create content and add it to the view
content = Button(text='Close me!')
view = ModalView(auto_dismiss=False)
view.add_widget(content)

# bind the on_press event of the button to the dismiss function
content.bind(on_press=view.dismiss)

# open the view
view.open()

ModalView 事件

共有四个可用事件:on_pre_openon_open 在视图打开时触发;on_pre_dismisson_dismiss 在视图关闭时触发。

对于 on_dismiss,您可以通过在回调中显式返回 True 来阻止视图关闭::

def my_callback(instance):
    print('ModalView', instance, 'is being dismissed, but is prevented!')
    return True
view = ModalView()
view.add_widget(Label(text='Hello world'))
view.bind(on_dismiss=my_callback)
view.open()

在 1.5.0 版本发生变更: 如果 ModalView.auto_dismiss 属性为 True(默认值),则可以通过按键盘上的 Escape 键来关闭 ModalView。

class kivy.uix.modalview.ModalView(**kwargs)[源代码]

基类:AnchorLayout

ModalView 类。更多信息请参阅模块文档。

事件:
on_pre_open

在ModalView打开之前触发。当此事件触发时,ModalView尚未添加到窗口中。

on_open

当ModalView被打开时触发。

on_pre_dismiss

在ModalView关闭之前触发。

on_dismiss

当ModalView关闭时触发。如果回调返回True,则取消关闭操作。

在 1.11.0 版本发生变更: 新增事件 on_pre_openon_pre_dismiss

在 2.0.0 版本发生变更: 添加了属性“overlay_color”。

在 2.1.0 版本发生变更: 已将 attach_to 属性标记为弃用。

attach_to

如果设置了 attach_to 属性,视图将附加到该控件最近的父级窗口。若未找到,则附加到主/全局窗口。

attach_to 是一个 ObjectProperty,默认值为 None。

auto_dismiss

此属性决定当用户点击视图外部时,视图是否自动关闭。

auto_dismiss 是一个 BooleanProperty,默认值为 True。

background

视图背景所使用的视图背景图像。

background 是一个 StringProperty,默认值为 'atlas://data/images/defaulttheme/modalview-background'。

background_color

背景颜色,格式为(r,g,b,a)。

此属性作为纹理颜色的*倍增器*。默认纹理为灰色,因此仅设置背景颜色会得到较暗的结果。若要设置纯色,请将 background_normal 设置为 ''

background_color 是一个 ColorProperty,默认值为 [1, 1, 1, 1]。

在 2.0.0 版本发生变更: 更改了行为,使其影响部件本身的背景,而非叠加层的变暗效果。从 ListProperty 改为 ColorProperty

border

用于 BorderImage 图形指令的边框。用于 background_normalbackground_down 属性。当使用自定义背景时可以使用。

它必须是一个包含四个值的列表:(bottom, right, top, left)。请阅读 BorderImage 指令以获取更多关于如何使用它的信息。

border 是一个 ListProperty,默认值为 (16, 16, 16, 16)。

dismiss(*_args, **kwargs)[源代码]

如果视图处于打开状态,则将其关闭。

如果你确实想要关闭视图,无论`on_dismiss`事件返回什么,都可以使用`force`关键字参数:

view = ModalView()
view.dismiss(force=True)

当视图被关闭时,它会在从父级移除之前淡出。如果你不想要这个动画,可以使用:

view.dismiss(animation=False)
on__anim_alpha(_instance, value)[源代码]

动画进度回调。

on_dismiss()[源代码]

默认的关闭事件处理器。

on_motion(etype, me)[源代码]

当接收到运动事件时调用。

参数:
etypestr

事件类型,取值为"begin"、"update"或"end"之一。

me: MotionEvent

收到运动事件

返回:

bool 类型,值为 True 时停止事件分发。

在 2.1.0 版本加入.

警告

这是一个实验性方法,只要此警告存在,它就仍处于实验阶段。

on_open()[源代码]

默认打开事件处理器。

on_pre_dismiss()[源代码]

默认的预关闭事件处理器。

on_pre_open()[源代码]

默认的预打开事件处理器。

on_touch_down(touch)[源代码]

触摸按下事件处理器。

on_touch_move(touch)[源代码]

触摸移动事件处理器。

on_touch_up(touch)[源代码]

触摸抬起事件处理器。

open(*_args, **kwargs)[源代码]

在窗口中显示模态框。

当视图打开时,它会以动画效果淡入。如果你不想要动画效果,请使用:

view.open(animation=False)
overlay_color

叠加颜色,格式为 (r, g, b, a)。用于使模态视图后面的窗口变暗。

overlay_color 是一个 ColorProperty,默认值为 [0, 0, 0, .7]。

在 2.0.0 版本加入.