python - 如何在需要时启用向下滚动功能?
问题描述
我正在使用 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 - 在 keras 中编写自定义数据生成器
- apache-spark - 本地 spark 提交不返回任何结果
- c++ - Openssl、arm、windows、msys2、dirent.h
- python - 使用python连接到特定模式中的数据库和目标表
- c# - .NET Core 5 MVC 分页与自定义过滤器
- spring-data-jpa - 如何在使用 spring-data-jpa 时添加自定义日期转换器?
- python - 如何根据来自另一个 DataFrame 的条件创建新的 DataFrame
- graphql - 使用 NestJS 上传 GraphQL 时超出了最大调用堆栈大小
- excel - 处理 SAP - DEP 上多个意外弹出窗口的最佳策略?
- slack - Slack Shortcut 在我的 Bolt 集成中不起作用