from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.popup import Popup
from kivy.factory import Factory
class My3App(App):
def build(self):
return Hello()
class Hello(Widget):
def btn(self):
pass
if __name__ == "__main__":
My3App().run()
kv File
<Hello>:
Button:
text : "button1"
on_press : root.btn()
当我单击button1时如何创建弹出窗口?我想要一个包含许多按钮和标签的大弹出窗口。如何用kv语言编写弹出窗口?
预先感谢
答案 0 :(得分:0)
当我单击button1时如何创建弹出窗口?
在此解决方案中,它说明了dynamic class的用法,并且涉及到更改kv文件和Python脚本。
Factory
的导入语句CustomPopup
小部件继承的动态类Popup
on_release
事件,该事件使用Kivy Factory
注册和实例化动态类CustomPopup
。使用弹出窗口的open()
方法显示弹出窗口。#:import Factory kivy.factory.Factory
...
<CustomPopup@Popup>:
...
<Hello>:
Button:
text : "button1"
on_release: Factory.CustomPopup().open()
btn()
删除class Hello()
方法pass
添加到class Hello()
class Hello(Widget):
pass
如何用kv语言编写弹出窗口?
有两种方法可以实现具有Popup继承的类。
在此方法中,仅涉及对kv文件的更改。我们添加了动态类规则。
片段-KV#:import Factory kivy.factory.Factory
<CustomPopup@Popup>:
title: 'Test popup'
size_hint: (None, None)
size: (400, 400)
Label:
text: 'Hello world'
<Hello>:
Button:
text : "button1"
on_release: Factory.CustomPopup().open()
在此方法中,它涉及对kv文件和Python脚本的更改。我们在kv文件中添加了一个类规则,并在Python脚本中实现了一个类。
片段-KV<CustomPopup>:
title: 'Test popup'
size_hint: (None, None)
size: (400, 400)
Label:
text: 'Hello world'
<Hello>:
Button:
text : "button1"
on_press: root.btn()
片段-Py
from kivy.uix.popup import Popup
...
class CustomPopup(Popup):
pass
class Hello(Widget):
def btn(self):
popup = CustomPopup()
popup.open()
我想要一个包含许多按钮和标签的大弹出窗口。
在此解决方案中,我们将使用dynamic class,并将按钮和标签添加到kv文件中。创建弹出窗口时,必须至少设置Popup.title和Popup.content。 Popup.content
可以是任何小部件,例如Screen,Layouts(BoxLayout,GridLayout等),Label,Button等。BoxLayout或{ {3}},您可以添加GridLayout和Label。
#:import Factory kivy.factory.Factory
<CustomPopup@Popup>:
title: 'My Custom Kivy Popup'
auto_dismiss: False
BoxLayout:
orientation: 'vertical'
BoxLayout:
size_hint: 1, 0.9
Label:
text: 'Hello'
Label:
text: 'Kivy'
BoxLayout:
orientation: 'vertical'
Label:
text: 'Linux'
Label:
text: 'Python'
GridLayout:
rows: 1
row_force_default: True
row_default_height: '46dp'
col_force_default: True
col_default_width: '200dp'
Button:
text: 'Close this popup'
on_release: root.dismiss()
Button:
text: 'Cancel'
on_release: root.dismiss()
<Hello>:
Button:
text : "button1"
on_release: Factory.CustomPopup().open()
答案 1 :(得分:-1)
您应该查看本教程:https://kivy.org/doc/stable/api-kivy.uix.popup.html
MyPopup = Popup(title='Test popup', content=Label(text='Hello world'),
auto_dismiss=False
Button:
text: 'Open popup'
on_release: Factory.MyPopup().open()