2016-01-12 45 views
0

目標是一個屏幕,使用幾個圖像之一(隨每個屏幕加載隨機選擇)作爲背景。Kivy動態背景加載不起作用

該應用程序包含以下內容:

class AnswerScreen(Screen): 
    bkgd = "" 
    def choose_bkgd(self): 
     self.bkgd = "{}.jpg".format(random.randint(0,8)) 

我千伏文件包含以下內容:

<AnswerScreen> 
    on_pre_enter: root.choose_bkgd() 
    canvas.before: 
     Rectangle: 
      pos: self.pos 
      size: self.size 
      source: root.bkgd 

不幸的是,背景永遠只是一個純白色。 我已經添加了打印電話choose_bkgd(),它總是打印一個可接受的文件名,我也嘗試使用on_enter:,但沒有改變。如果我替換源文件:使用文件名而不是root.bkgd,圖像顯示正確。這導致我相信背景是在函數被調用來設置bkgd變量之前生成的,但是這使我困惑,因爲我認爲on_pre_enter的整個要點是在加載屏幕之前執行代碼。 kivy文檔尚未爲我解決這個問題。任何幫助是極大的讚賞。

回答

1

使bkgd成爲一個kivy屬性。這對綁定到它並且在事情發生變化時會自動更新是非常重要的。

from kivy.properties import StringProperty 
class AnswerScreen(Screen): 
    bkgd = StringProperty("") 
... 
+0

嘎!我是基維新手,有幾件事情我似乎無法擊敗我的小腦袋。謝謝。 –