ScrollView出现在底部的弹出窗口太小了?

时间:2017-07-10 11:43:29

标签: python layout kivy

我正在尝试将ScrollView添加到kivy中的弹出窗口,但滚动视图似乎只占用了弹出窗口的一小部分而且由于某种原因而占据了底部。

我唯一能想到的就是明确设置滚动视图的高度,但我不知道如何做到这一点,因为它需要根据窗口大小进行缩放,而popup.height似乎包括标题杆

这是我的代码:

scroll = ScrollView(size_hint=(1, None))
popup = Popup(title='Thanks Stack Overflow!', size_hint=(0.9, 0.9), content=scroll)
box = BoxLayout(orientation='vertical', size_hint=(1, None))
scroll.add_widget(box)
box.bind(minimum_height=box.setter('height'))
for i in range(1000):
        box.add_widget(Button(text='test button {}'.format(i), size_hint=(1, None)))

这是我得到的结果: Result from above code

它是可滚动的,工作正常,只是它没有占用正确的空间。

编辑:所以现在我手动设置高度与弹出窗口大小相关,因为弹出标题似乎没有太大变化。但如果可以的话,我仍然想要一个更好的方法。

1 个答案:

答案 0 :(得分:1)

这是我更新的python代码文件

from kivy.uix.popup import Popup
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.boxlayout import BoxLayout
from kivy.app import runTouchApp

scroll = ScrollView()
popup = Popup(title='Thanks Stack Overflow!', size_hint=(0.9, 0.9), content=scroll)
grid = GridLayout(cols=1, size_hint=(1, None))
scroll.add_widget(grid)
grid.bind(minimum_height=grid.setter('height'))
for i in range(1000):
        grid.add_widget(Button(text='test button {}'.format(i), size_hint=(1, None)))

box = BoxLayout()
box.add_widget(popup)
runTouchApp(box)

我删除了ScrollView的size_hint(1, None)。现在它们是默认值(1,1)。此外,使用GridLayout与ScrollView而不是BoxLayout总是有意义的。 BoxLayout只占用其父级的大小。你需要比它的父更大的东西,以便它可以滚动。

旁注:看一下kivy文件,我认为它们会让它变得更容易。

另外,我会设置按钮的高度。如果不设置它们,我不知道它们在哪里得到高度。我没有添加,因为我希望尽可能让我的解决方案尽可能接近您的代码。

enter image description here