我正在用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()
最佳答案
如果可以计算所需的大小,则可以调整Accordion
的大小,然后将Accordion
放在ScrollView
中。例如:
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()
关于python - 必要时如何启用向下滚动功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53382711/