弹出窗口

在 1.0.7 版本加入.

_images/popup.jpg

: Popup 控件用于创建模态弹窗。默认情况下,弹窗会覆盖整个“父”窗口。在创建弹窗时,您至少需要设置 Popup.titlePopup.content

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

在 1.4.0 版本发生变更: : Popup 类现在继承自 ModalViewPopup 提供了一个默认布局,包含标题和分隔条。

示例

一个简单的400x400“Hello world”弹窗示例:

popup = Popup(title='Test popup',
    content=Label(text='Hello world'),
    size_hint=(None, None), size=(400, 400))

默认情况下,点击弹出窗口外部将关闭/消除它。如果你不希望这样,可以将 auto_dismiss 设置为 False:

popup = Popup(title='Test popup', content=Label(text='Hello world'),
              auto_dismiss=False)
popup.open()

要手动关闭/弹出弹窗,请使用 dismiss:

popup.dismiss()

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

# create content and add to the popup
content = Button(text='Close me!')
popup = Popup(content=content, auto_dismiss=False)

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

# open the popup
popup.open()

仅使用 Factory 在 KV 语言中实现相同功能:

#:import Factory kivy.factory.Factory
<MyPopup@Popup>:
    auto_dismiss: False
    Button:
        text: 'Close me!'
        on_release: root.dismiss()

Button:
    text: 'Open popup'
    on_release: Factory.MyPopup().open()

备注

Popup 是一个特殊的部件。不要尝试将其作为子部件添加到任何其他部件中。如果这样做,Popup 将被当作普通部件处理,而不会在后台隐藏创建。

BoxLayout:
    MyPopup:  # bad!
class kivy.uix.popup.Popup(**kwargs)[源代码]

基类:ModalView

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

事件:
on_open

当Popup打开时触发。

on_dismiss

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

add_widget(widget, *args, **kwargs)[源代码]

将此小部件添加为当前小部件的子级。

参数:
widget: Widget

要添加到我们子控件列表中的控件。

index:整数,默认值为0

在列表中插入小部件的索引。请注意,默认值为0意味着小部件被插入到列表的开头,因此会绘制在其他同级小部件之上。关于索引和小部件层次结构的完整讨论,请参阅 小部件编程指南

在 1.0.5 版本加入.

canvas:字符串,默认为 None

用于添加控件画布的Canvas。可以是'before'、'after'或None(默认画布)。

在 1.9.0 版本加入.

>>> from kivy.uix.button import Button
>>> from kivy.uix.slider import Slider
>>> root = Widget()
>>> root.add_widget(Button())
>>> slider = Slider()
>>> root.add_widget(slider)
content

显示在标题正下方的弹出窗口内容。

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

on_touch_down(touch)[源代码]

触摸按下事件处理器。

separator_color

标题与内容之间分隔线所使用的颜色。

在 1.1.0 版本加入.

separator_color 是一个 ColorProperty,默认值为 [47 / 255., 167 / 255., 212 / 255., 1.]。

在 2.0.0 版本发生变更: ListProperty 更改为 ColorProperty

separator_height

分隔符的高度。

在 1.1.0 版本加入.

separator_height 是一个 NumericProperty,默认值为 2dp。

title

表示弹出窗口标题的字符串。

title 是一个 StringProperty,默认值为 'No title'。

title_align

标题的水平对齐方式。

在 1.9.0 版本加入.

title_align 是一个 OptionProperty,默认值为 'left'。可用选项包括 left、center、right 和 justify。

title_color

标题所使用的颜色。

在 1.8.0 版本加入.

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

在 2.0.0 版本发生变更: ListProperty 更改为 ColorProperty

title_font

用于渲染标题文本的字体。

在 1.9.0 版本加入.

title_font 是一个 StringProperty,默认值为 'Roboto'。该值取自 Config

title_size

表示弹出窗口标题的字体大小。

在 1.6.0 版本加入.

title_size 是一个 NumericProperty,默认值为 '14sp'。

exception kivy.uix.popup.PopupException[源代码]

基类:Exception

弹出窗口异常,当向弹出窗口添加多个内容控件时触发。

在 1.4.0 版本加入.