2

TreeView で使用するカスタム TreeViewNode を作成しようとしています。横にラベルが付いた画像が必要なだけです。

カスタム ノードを作成しようとしていますが、ソースでの方法を複製しても、同じ結果は得られません。

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_hints、pos などでウィジェットを構成しようとしても、ツリーに関連する場所からそのラベルを移動することはできません。

私の当初の計画は、ノードに画像とラベルが貼り付けられたボックスレイアウトから継承させることでしたが、カスタム ノードのサイズ変更では、現在わかっていることを考えると、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"
4

1 に答える 1