2014-03-13 52 views
0

所以在今天早些时候,我问了一个微小的错误,哪个恶意回应。 他的答案奏效,但并不完美。我最初的问题是在点击按钮后从一个函数中添加一个小部件,但每次单击该按钮时它都会添加一个小部件。所以首先点击它说“嗨”,然后点击它说“嗨嗨”等。 这里是我的代码(例如脚本):Kivy:小部件加起来

import kivy 
from kivy.uix.popup import Popup 
from kivy.uix.label import Label 
from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.boxlayout import BoxLayout 
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") 
      App.get_running_app().popup.open() 


class apprun(App): 
    def build(self): 
     self.popup = Popup(content=textshow) 
     return main() 
apprun().run() 

回答

1

这是因为你的answer功能增加了一个小工具,textshow,但你永远不删除任何小部件,所以你只得到越来越多。

你最好把这些全部放在一个特定的类中,而不是放在这些全局范围变量中。例如,你可以让你自己的弹出类显示一些文本,只要你喜欢,并且简单地用一个StringProperty来设置这个文本。然后,您可以存储一个或每次使用所需的文本属性创建一个新实例。