Android 如何获得Kivy中RST文档的大小?

Android 如何获得Kivy中RST文档的大小?,android,python,treeview,scrollview,kivy,Android,Python,Treeview,Scrollview,Kivy,这感觉像是一个愚蠢的问题,但在过去的几天里,我在互联网上搜索了一些看起来非常简单的东西,但毫无结果。无论如何,我想做的是有一个具有RstDocument叶子的TreeView小部件。现在,当我这样做的时候,我得到了一束叶子,它们的窗户更小,与这个人的方式相似: 他们的解决方案不适用于我,因为RstDocument对象没有与其关联的纹理对象。经过进一步研究,它似乎没有任何与像素大小相关的属性,它继承的ScrollView布局也没有。试图找到这样的数字给我的东西,给出的大小是100像素,这不是正在显

这感觉像是一个愚蠢的问题,但在过去的几天里,我在互联网上搜索了一些看起来非常简单的东西,但毫无结果。无论如何,我想做的是有一个具有RstDocument叶子的TreeView小部件。现在,当我这样做的时候,我得到了一束叶子,它们的窗户更小,与这个人的方式相似:

他们的解决方案不适用于我,因为RstDocument对象没有与其关联的纹理对象。经过进一步研究,它似乎没有任何与像素大小相关的属性,它继承的ScrollView布局也没有。试图找到这样的数字给我的东西,给出的大小是100像素,这不是正在显示的

理想情况下,我会尝试获取它,以便RstDocument在扩展时完全显示,这样最终用户可以在树中滚动,折叠他们不需要的内容。我不需要RstDocument来滚动,因为ScrollView已经在TreeView小部件上了

在法律上尽可能接近该准则:

from kivy.app import App
from kivy.uix.treeview import TreeView
from kivy.uix.treeview import TreeViewLabel
from kivy.uix.treeview import TreeViewNode
from kivy.uix.scrollview import ScrollView
from kivy.uix.rst import RstDocument


class TreeViewRst (RstDocument,TreeViewNode):
        pass

class TreeApp (App):   
    def build (self):
        root = StackLayout()
        scroll = ScrollView(pos = (0, 0),size_hint=(1,0.78))
        body = TreeView(hide_root=True,indent_level=0,size_hint=(1,None))
        body.bind(minimum_height=body.setter('height'))
        intro = body.add_node(TreeViewLabel(text="Title",font_size=18))
        intro_diag = body.add_node(TreeViewLabel(text="Article"))

        body.add_node(TreeViewRst(source='lopsem.rst',size=(100,100)),parent=intro_diag)
        scroll.add_widget(body)
        root.add_widget(scroll)
        return root

Window.size = (360,640)
tree = TreeApp()
tree.run()
以及结果的图片:


没关系,我找到了问题的答案。我会把它贴在这里,以供其他有相同或类似问题的人参考

当我试图获取RstDocument对象的大小时遇到的问题是,在节点仍然折叠时,对象的高度为0。打开时,从ScrollView继承的视口属性在滚动之前具有文档的大小(以像素为单位)。它不是100%,因为最初打开时的高度比实际高度大,单击时会更正,或者尝试滚动时也会更正(因此我怀疑对象直到这些事件发生时才知道,在哪里执行计算来确定)

以下是我所做的:

from kivy.app import App
from kivy.uix.treeview import TreeView
from kivy.uix.treeview import TreeViewLabel
from kivy.uix.treeview import TreeViewNode
from kivy.uix.scrollview import ScrollView
from kivy.uix.rst import RstDocument
from kivy.core.window import Window
from kivy.uix.stacklayout import StackLayout


class TreeViewRst (RstDocument,TreeViewNode):
        pass

def update_size (event1,event2):
    event1.size = event1.viewport_size


class TreeApp (App):   
    def build (self):
        root = StackLayout()
        scroll = ScrollView(pos = (0, 0),size_hint=(1,0.78))
        body = TreeView(hide_root=True,indent_level=0,size_hint=(1,None))
        body.bind(minimum_height=body.setter('height'))
        intro = body.add_node(TreeViewLabel(text="Title",font_size=18))
        intro_diag = body.add_node(TreeViewLabel(text="Article"))

        test = body.add_node(TreeViewRst(source='lopsem.rst',size=(100,400)),parent=intro_diag)
        test.bind(on_scroll_start=update_size)
        scroll.add_widget(body)
        root.add_widget(scroll)
        return root

Window.size = (360,640)
tree = TreeApp()
tree.run()
结果就是我所希望的:

我只想感谢IceMAN前几天的编辑


同时,感谢所有人为这个网站。这是我第一次发布一个问题,但它有助于回答我过去遇到的许多问题。

不过,我找到了问题的解决方案。我会把它贴在这里,以供其他有相同或类似问题的人参考

当我试图获取RstDocument对象的大小时遇到的问题是,在节点仍然折叠时,对象的高度为0。打开时,从ScrollView继承的视口属性在滚动之前具有文档的大小(以像素为单位)。它不是100%,因为最初打开时的高度比实际高度大,单击时会更正,或者尝试滚动时也会更正(因此我怀疑对象直到这些事件发生时才知道,在哪里执行计算来确定)

以下是我所做的:

from kivy.app import App
from kivy.uix.treeview import TreeView
from kivy.uix.treeview import TreeViewLabel
from kivy.uix.treeview import TreeViewNode
from kivy.uix.scrollview import ScrollView
from kivy.uix.rst import RstDocument
from kivy.core.window import Window
from kivy.uix.stacklayout import StackLayout


class TreeViewRst (RstDocument,TreeViewNode):
        pass

def update_size (event1,event2):
    event1.size = event1.viewport_size


class TreeApp (App):   
    def build (self):
        root = StackLayout()
        scroll = ScrollView(pos = (0, 0),size_hint=(1,0.78))
        body = TreeView(hide_root=True,indent_level=0,size_hint=(1,None))
        body.bind(minimum_height=body.setter('height'))
        intro = body.add_node(TreeViewLabel(text="Title",font_size=18))
        intro_diag = body.add_node(TreeViewLabel(text="Article"))

        test = body.add_node(TreeViewRst(source='lopsem.rst',size=(100,400)),parent=intro_diag)
        test.bind(on_scroll_start=update_size)
        scroll.add_widget(body)
        root.add_widget(scroll)
        return root

Window.size = (360,640)
tree = TreeApp()
tree.run()
结果就是我所希望的:

我只想感谢IceMAN前几天的编辑

同时,感谢所有人为这个网站。这是我第一次发布一个问题,但它在回答我过去遇到的许多问题方面起到了帮助作用