Kivy制作自定义TreeViewNode

魔术弹珠

我试图创建一个自定义TreeViewNode与TreeView一起使用。仅需要图像旁边带有标签的图片,仅此而已。

然而,尝试创建自定义节点...甚至复制源中的操作方式也不会产生相同的结果。

实际上,TreeViewlabel只是一个带有注释的类声明。

class TreeViewLabel(Label, TreeViewNode):
'''there's just a comment here'''

这是我的TreeViewLabel版本供比较

class TreeViewImageLabel(Label, TreeViewNode):
"""oh boy this is a comment"""

很好地尝试创建此代码的副本,并将其添加到树中会产生以下内容。我的版本是第一个标签,后续的标签是默认的TreeViewLabel在此处输入图片说明

它全部间隔开,未对齐且巨大。没有kivy附带的TreeViewLabel那么整洁。

到底他妈发生了什么?它不仅看起来不像TreeViewLabel,而且尝试用size,size_hints,pos等配置小部件,也不会使标签相对于树的位置动摇。

我最初的计划是让我的节点从具有图像和标签的boxlayout继承,但是随着自定义节点的大小确定,鉴于我现在所知道的,不可能获得任何看起来像TreeViewNode的东西。

找到了解决方案

因此,这是实施修补程序后的样子: 在此处输入图片说明

对于其他想要像我一样制作带有图片和标签的TreeViewNode的人,这是使它起作用的代码:

#python
class TreeViewImageLabel(BoxLayout, TreeViewNode):
    pass

和.kv

#kivy language
<TreeViewImageLabel>:
height: max(lbl.texture_size[1] + dp(10), dp(24))

    Image:
        size: (max(lbl.texture_size[1] + dp(10), dp(24)), max(lbl.texture_size[1] + dp(10), dp(24)))
        size_hint: (.05, 1)
        id:img
        source: "smiley.png"
    Label:
        size_hint: (.9, 1)
        id:lbl
        text_size: self.width, None
        text: "test"
瑞安·P

您只复制了TreeViewLabel课程的一部分您重新创建了Python类,但也应用了一个kv规则

<TreeViewLabel>:
    width: self.texture_size[0]
    height: max(self.texture_size[1] + dp(10), dp(24))
    text_size: self.width, None

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章