2014-03-13 71 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來設置這個文本。然後,您可以存儲一個或每次使用所需的文本屬性創建一個新實例。