首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kivy添加Widget错误

Kivy添加Widget错误
EN

Stack Overflow用户
提问于 2014-03-12 20:17:50
回答 1查看 1.7K关注 0票数 1

我的问题是,当我想运行上面的例子时,它将无法工作。所发生的情况是,弹出的文本"test“显示一次,然后当我再次单击按钮时,它会显示错误:

代码语言:javascript
复制
File "/home/river/android-sdk/workplace/python-forandroid/build/pythoninstall/lib/python2.7/site-packages/kivy/uix/layout.py", line 76, in add_widget
File "/home/river/android-sdk/workplace/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/uix/widget.py", line 314, in add_widget
kivy.uix.widget.WidgetException: Cannot add <kivy.uix.boxlayout.BoxLayout object at 0x60a25a78>, it already has a parent <kivy.uix.boxlayout.BoxLayout object at 0x60e2bae8>

我认为原因是我必须在每次点击之后删除这个小部件。(我不知道怎么做)

代码语言:javascript
复制
 import kivy
 import kivy.uix.label
 import kivy.app
 import kivy.lang.builder
 textshow = BoxLayout()
 def answer(answer):
      text = Label(text=str(answer))
      textshow.add_widget(text)
 Builder.load_string('''
 <main>:
     Button: 
         on_release: root.show()
 ''')
 class main(BoxLayout):
      def show(self):
           answer("test")
           popup = Popup(content=textshow)
           popup.open()
 class apprun(App):
     def build(self):
         return main()
 apprun().run()

如果你回答了这个问题,请出示全部代码。

编辑:这是一个示例脚本,我的实际脚本有2个类Screen1,textshow = BoxLayout()类

Inclement的回答是有效的,但是每一次单击按钮都会产生另一个文本显示!请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-12 21:10:19

一个简单的答案是存储弹出窗口,每次只使用smae。例如,您可以将self.popup = Popup(content=textshow)放在build方法中,然后将show方法更改为有App.get_running_app().popup.open()。这将始终打开保存的单个弹出窗口,避免出现问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22362864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档