3 回答

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊
根本原因:
在您的應(yīng)用程序中,有兩個(gè)class Admin實(shí)例化的實(shí)例。
WindowManager()當(dāng)您在方法中實(shí)例化根時(shí),第一個(gè)實(shí)例在 kv 文件中實(shí)例化build。
片段:
<WindowManager>:
...
Admin:
id: scr_3
name: 'admin'
...
第二個(gè)實(shí)例在class BlogChip.
片段:
class BlogChip(MDChip):
get_admin = Admin()
...
類(lèi)屬性my_string在 的第二個(gè)實(shí)例中更新class Admin。但是屏幕正在引用由根實(shí)例化的實(shí)例。因此,應(yīng)用程序顯示空字符串。
解決方案:
該解決方案需要更改 kv 和 python 文件。
kv文件:
替換 callback: root.get_admin.get_article 為 callback: app.root.ids.scr_3.get_article
片段:
<BlogChip>
label: root.title
icon: ''
callback: app.root.ids.scr_3.get_article
蟒蛇文件:
刪除get_admin = Admin()在class BlogChip(MDChip):
片段:
class BlogChip(MDChip):
id = NumericProperty()
title = StringProperty()
body = StringProperty()
在方法中,edit()初始化類(lèi)屬性,var
片段:
class EditArticle(Screen):
var = StringProperty()
def edit(self, instance):
# Each screen has by default a property manager that
# gives you the instance of the ScreenManager used.
self.var = self.manager.ids.scr_3.my_string
print(self.var, ' << it is going to be <my_string> from Admin')
輸出:

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
我真的不明白你在你的代碼中做了什么?
你為什么不直接看看Admin.my_string
你的內(nèi)部EditArticle class
?
如果這不起作用,您是否嘗試getter
為您的my_string
屬性創(chuàng)建一個(gè)?
抱歉,我不知道它是如何StringProperty
工作的……但是你不能在 中做類(lèi)似下面的事情嗎Agent class
?
def get_my_string(): return my_string.value()
然后你就打電話(huà)Agent.get_my_string()
給你的EditArticle
班級(jí)。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
這是我的問(wèn)題的解決方案。我必須添加EditArticle.my_string = self.my_string這樣class Admin的內(nèi)容:
def edit_article(self, instance):
EditArticle.my_string = self.my_string
App.get_running_app().window_manager.current = 'edit-article'
self.dialog_get_article.dismiss()
在此之后我可以得到它c(diǎn)lass EditArticle()
添加回答
舉報(bào)