簡體   English   中英

使用ScreenManager釋放按鈕時KV中的初始化屏幕

[英]Init screen in kv on button release using ScreenManager

我是Kivy的初學者,我需要你們的一些建議。 我正在使用ScreenManager在屏幕之間跳轉,據我所知,所有屏幕都在應用程序啟動后立即初始化,並且我需要使用先前屏幕中的某些屬性(例如選擇類別或內容)來初始化它們。 有什么辦法嗎?

我在CategorySelectScreen中有兩個按鈕,都代表某個類別,我希望它們向DictScreen發送一個字符串屬性,該字符串屬性將在CategorySelect方法中用作參數,該方法過濾項目列表,但事實是,應用程序需要該參數一開始,沒有它,解釋器將拋出錯誤。

另外,我認為我使用kivy的方式非常不好,能否請您查看我的代碼並給我一些專業提示? 在此先感謝,歡呼:)

kv文件: http//pastebin.com/UdvGS7Wv

py文件: http//pastebin.com/gJn9Mrip

在聲明屏幕時,決定要輸入的對象。 然后將此對象作為屬性。 之后,設置on _...回調,在其中使用帶有基於此輸入對象的值的小部件來構建屏幕。 例如:

class DictScreen(Screen):
   category_selected = ObjectProperty(None)

   def on_category_selected(self, instance, value):
      category_selected = value
      self.clear_widgets()
      self.add_widget(Button(text=category_selected.name))

在上一個屏幕中,在切換到DictScreen之前,請從app.root.ids中獲取其實例,然后將category_selected分配給它,然后使用ScreenManager設置新的當前屏幕。 這樣,在您切換到DictScreen之前,它會立即使用選定的類別構建。

在切換到DictScreen之前先獲取其實例 ”如何完成? 在這里有很好的解釋: https : //kivy.org/docs/api-kivy.uix.widget.html?highlight=widget#kivy.uix.widget.Widget.ids

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM