3 回答

TA貢獻1752條經驗 獲得超4個贊
根本原因:
在您的應用程序中,有兩個class Admin實例化的實例。
WindowManager()當您在方法中實例化根時,第一個實例在 kv 文件中實例化build。
片段:
<WindowManager>:
...
Admin:
id: scr_3
name: 'admin'
...
第二個實例在class BlogChip.
片段:
class BlogChip(MDChip):
get_admin = Admin()
...
類屬性my_string在 的第二個實例中更新class Admin。但是屏幕正在引用由根實例化的實例。因此,應用程序顯示空字符串。
解決方案:
該解決方案需要更改 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()初始化類屬性,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貢獻1906條經驗 獲得超10個贊
我真的不明白你在你的代碼中做了什么?
你為什么不直接看看Admin.my_string
你的內部EditArticle class
?
如果這不起作用,您是否嘗試getter
為您的my_string
屬性創建一個?
抱歉,我不知道它是如何StringProperty
工作的……但是你不能在 中做類似下面的事情嗎Agent class
?
def get_my_string(): return my_string.value()
然后你就打電話Agent.get_my_string()
給你的EditArticle
班級。

TA貢獻1842條經驗 獲得超21個贊
這是我的問題的解決方案。我必須添加EditArticle.my_string = self.my_string這樣class Admin的內容:
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()
在此之后我可以得到它class EditArticle()
添加回答
舉報