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