目录
- 模态视图
- 示例
- ModalView 事件
ModalViewModalView.attach_toModalView.auto_dismissModalView.backgroundModalView.background_colorModalView.borderModalView.dismiss()ModalView.on__anim_alpha()ModalView.on_dismiss()ModalView.on_motion()ModalView.on_open()ModalView.on_pre_dismiss()ModalView.on_pre_open()ModalView.on_touch_down()ModalView.on_touch_move()ModalView.on_touch_up()ModalView.open()ModalView.overlay_color
模态视图¶
在 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_open 和 on_open 在视图打开时触发;on_pre_dismiss 和 on_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)[源代码]¶
基类:
AnchorLayoutModalView 类。更多信息请参阅模块文档。
- 事件:
- on_pre_open:
在ModalView打开之前触发。当此事件触发时,ModalView尚未添加到窗口中。
- on_open:
当ModalView被打开时触发。
- on_pre_dismiss:
在ModalView关闭之前触发。
- on_dismiss:
当ModalView关闭时触发。如果回调返回True,则取消关闭操作。
在 1.11.0 版本发生变更: 新增事件 on_pre_open 和 on_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_normal和background_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_motion(etype, me)[源代码]¶
当接收到运动事件时调用。
- 参数:
- etype:str
事件类型,取值为"begin"、"update"或"end"之一。
- me:
MotionEvent 收到运动事件
- 返回:
bool 类型,值为 True 时停止事件分发。
在 2.1.0 版本加入.
警告
这是一个实验性方法,只要此警告存在,它就仍处于实验阶段。
- overlay_color¶
叠加颜色,格式为 (r, g, b, a)。用于使模态视图后面的窗口变暗。
overlay_color是一个ColorProperty,默认值为 [0, 0, 0, .7]。在 2.0.0 版本加入.