Kivy:小部件正在加起来

时间:2014-03-13 02:49:44

标签: android python 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 个答案:

答案 0 :(得分:1)

这是因为您的answer功能会向textshow添加一个小部件,但您永远不会移除任何小部件,因此您会获得越来越多的内容。

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