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()
添加回答
举报