目录
弹出窗口¶
在 1.0.7 版本加入.
: Popup 控件用于创建模态弹窗。默认情况下,弹窗会覆盖整个“父”窗口。在创建弹窗时,您至少需要设置 Popup.title 和 Popup.content。
请记住,Widget 的默认尺寸是 size_hint=(1, 1)。如果你不希望弹出窗口全屏显示,可以使用小于 1 的尺寸提示值(例如 size_hint=(.8, .8)),或者禁用 size_hint 并使用固定尺寸属性。
示例¶
一个简单的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!
弹出窗口事件¶
有两个可用事件:on_open,在弹出窗口打开时触发;以及`on_dismiss`,在弹出窗口关闭时触发。对于`on_dismiss`,您可以通过在回调中显式返回`True`来阻止弹出窗口关闭:
def my_callback(instance):
print('Popup', instance, 'is being dismissed but is prevented!')
return True
popup = Popup(content=Label(text='Hello world'))
popup.bind(on_dismiss=my_callback)
popup.open()
- class kivy.uix.popup.Popup(**kwargs)[源代码]¶
基类:
ModalViewPopup 类。更多信息请参阅模块文档。
- 事件:
- 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 版本加入.
- widget:
>>> 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。
- 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'。