卡在 Kivy 中的类函数
Posted
技术标签:
【中文标题】卡在 Kivy 中的类函数【英文标题】:Stuck with Class Function in Kivy 【发布时间】:2021-12-20 15:36:36 【问题描述】:所以我一直在创建这个 Kivy 应用程序,但是发生了这种情况
class MyScreenManager(ScreenManager):
def __init__(self, **kwargs):
super(MyScreenManager, self).__init__(**kwargs)
'''conn = sqlite3.connect('first_db.db')
c = conn.cursor()
c.execute("SELECT name FROM sqlite_master WHERE type='table';")
screens = c.fetchall()
for i in range(len(screens)):
self.add_note()
c.close()'''
self.add_note()
def add_note(self, name = ""):
self.add_widget(NoteScreen(name = name))
print(self.parent)
我的 .kv 文件
MDNavigationLayout:
x: toolbar.height
size_hint_y: 1.0 - toolbar.height/root.height
MyScreenManager:
id: screen_manager
NoteScreen:
name: "Home"
当我运行应用程序时,它没有打印出 MyScreenManager 的父级,即 MDNavigationLayout,而是打印出“None”。我不知道如何解决它。有人可以帮帮我吗?
【问题讨论】:
这能回答你的问题吗? Kivy: get parent inside widget which is added in python 我不这么认为,因为 MDNavigationLayout 已经是 MyScreenManager 的父级 【参考方案1】:self.parent
在使用__init__
方法时不可用,因为该类首先被实例化,然后添加到其父级。
每documentation:
widget 的父级在widget 添加到另一个widget 时设置
基础Widget.__init_()
没有设置self.parent
。
由于 Kivy 为 parent
使用可观察的 property,因此可以在 on_parent
中添加操作
def on_parent(self, instance, value):
super(MyScreenManager, self).on_parent(instance, value)
self.add_note()
【讨论】:
哦,好的。你能推荐任何解决这个问题的方法吗?我想在第一次实例化该类时使用来自另一个父类的函数。我还是个初学者 @BachTran 查看更新以上是关于卡在 Kivy 中的类函数的主要内容,如果未能解决你的问题,请参考以下文章