Python 需要时如何启用向下滚动功能?

Python 需要时如何启用向下滚动功能?,python,python-3.x,kivy,Python,Python 3.x,Kivy,我正在用Kivy构建一个应用程序,它将有一系列下拉项。当我把一个手风琴放得比屏幕大时,“没有足够的空间来显示所有的孩子们。”因为,我有太多的孩子们不能在一页上显示,所以我不想一次显示所有的孩子们;我如何告诉程序不用担心,只需启用向下滚动功能?就我个人而言,我在互联网上找不到任何大型手风琴增加滚动功能的例子。我在互联网上找到的所有解决方案都只是简单地说“腾出更多空间” 下面的代码创建了30个不适合屏幕的手风琴项目,并产生错误。提前谢谢你,如果你需要更多的澄清,我很乐意提供 from kivy.ui

我正在用Kivy构建一个应用程序,它将有一系列下拉项。当我把一个手风琴放得比屏幕大时,“没有足够的空间来显示所有的孩子们。”因为,我有太多的孩子们不能在一页上显示,所以我不想一次显示所有的孩子们;我如何告诉程序不用担心,只需启用向下滚动功能?就我个人而言,我在互联网上找不到任何大型手风琴增加滚动功能的例子。我在互联网上找到的所有解决方案都只是简单地说“腾出更多空间”

下面的代码创建了30个不适合屏幕的手风琴项目,并产生错误。提前谢谢你,如果你需要更多的澄清,我很乐意提供

from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App


class AccordionApp(App):
    def build(self):
        root = Accordion(orientation='vertical')
        for x in range(30):
            item = AccordionItem(title='Title %d' % x)
            item.add_widget(Label(text='Very big content\n' * 10))
            root.add_widget(item)
        return root


if __name__ == '__main__':
    AccordionApp().run()

如果可以计算所需的大小,您可以调整
手风琴的大小,并将
手风琴放置在
滚动视图中。例如:

from kivy.core.window import Window
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.scrollview import ScrollView


class AccordionApp(App):
    def build(self):
        root = ScrollView(size_hint=(None, 1), size=(Window.width, Window.height))
        acc = Accordion(size_hint_x=None)
        width_calc = 200     # guess at width needed for one open item content
        root.add_widget(acc)
        for x in range(30):
            item = AccordionItem(title='Title %d' % x)
            item.add_widget(Label(text='Very big content\n' * 10))
            acc.add_widget(item)
            width_calc += item.min_space    # add minimum width for an item
        acc.width = width_calc              # set Accordion width
        return root


if __name__ == '__main__':
    AccordionApp().run()

我认为这是一个bug,我建议将其报告。我怀疑将其报告为bug是否会有所帮助,因为它的作用完全相同。也许有一个特性请求建议将
Accordion
容器放置在
ScrollView
@JohnAnderson中,鉴于Accordion似乎不允许该功能,您是否有任何建议使用pythonggui来编程类似的东西?或者最好走出Python,学习HTML/CSS/JAVASCRIPT以获得更多的控制。谢谢John!这正是我想要的。作为一个附带问题(也许我应该为此提出一个新的堆栈溢出问题),在全屏模式下,scrollview似乎不会占据整个窗口的宽度。这是因为程序仍在使用非全屏“window.width”变量吗?如果我调整了框架的大小,有没有办法使这个变量动态?我想如果你只是将
ScrollView
创建行更改为
root=ScrollView()
,那么
ScrollView
应该会填满整个屏幕。太好了!约翰,非常感谢你的帮助。