我创建了一个弹出窗口。通常我们使用pop.dismiss关闭弹出窗口。但我想在该弹出窗口中添加一些按钮。我有4个按钮。当按下其中两个按钮时,它们应该显示另一个小部件(框布局)。但是当我触摸这些按钮时,应用程序崩溃了。
,但是这4个按钮中的另外2个在触摸时会显示另一个弹出窗口。它运作良好。没有崩溃
1)从弹出窗口>单击按钮>显示另一个弹出窗口>不会崩溃
2)从弹出窗口>触摸下2个按钮>,以显示boxlayout小部件>应用程序崩溃了!
任何人都可以解释一下吗?我该如何解决?
python代码
class abc(Popup):
def about_app(self):
self.clear_widgets()
self.add_widget(about())
def about_leo(self):
self.clear_widgets()
self.add_widget(page1())
def help(self):
pops=help_popup()
pops.open()
def website(self):
pops=website()
pops.open()
kv代码
<abc>:
title: 'LEO CLUB'
title_color: 1, 0, 0, 1
title_size: 50
title_align:'center'
background: 'popup.png'
size_hint: .6, 0.8
pos_hint: {'right': .6, 'top': 1}
BoxLayout:
BoxLayout:
orientation:'vertical'
Button:
bold: True
text: "About LEO"
background_color: 0, 0, 0, 0
on_release: root.about_leo()
Button:
bold:True
text: "About App"
background_color: 0, 0, 0, 0
on_release: root.about_app()
Button:
bold: True
text: "Website"
background_color: 0, 0, 0, 0
on_release: root.website()
Button:
bold: True
text: "Help"
background_color: 0, 0, 0, 0
on_release: root.help()
答案 0 :(得分:0)
您的代码正在self.add_widget()
类(这是abc
)中调用Popup
,但是Popup
只能有一个孩子(content
)。对clear_widgets()
的调用将删除Popup
的所有子项,但不会更改content
属性(可能应该更改)。因此,即使您删除了children
中的Popup
,它仍然认为它具有非空的content
。因此,您真正需要做的就是设置新的content
。在您的abc
类中,只需将这两个方法替换为:
def about_app(self):
self.content = about()
def about_leo(self):
self.content = page1()