Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在底部出现的弹出窗口中滚动视图是否太小?_Python_Layout_Kivy - Fatal编程技术网

Python 在底部出现的弹出窗口中滚动视图是否太小?

Python 在底部出现的弹出窗口中滚动视图是否太小?,python,layout,kivy,Python,Layout,Kivy,我试图在kivy的弹出窗口中添加一个滚动视图,但由于某些原因,滚动视图似乎只占据了弹出窗口的一小部分,并从底部向下移动 我能想到的唯一一件事就是显式设置滚动视图的高度,但我不知道怎么做,因为它需要随窗口大小和弹出窗口缩放。高度似乎包括标题栏 这是我的密码: scroll = ScrollView(size_hint=(1, None)) popup = Popup(title='Thanks Stack Overflow!', size_hint=(0.9, 0.9), content=scro

我试图在kivy的弹出窗口中添加一个滚动视图,但由于某些原因,滚动视图似乎只占据了弹出窗口的一小部分,并从底部向下移动

我能想到的唯一一件事就是显式设置滚动视图的高度,但我不知道怎么做,因为它需要随窗口大小和弹出窗口缩放。高度似乎包括标题栏

这是我的密码:

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)))
这就是我得到的结果:

它是可滚动的,运行良好,只是它没有占用正确的空间


编辑:所以现在我手动设置的高度是相对于弹出窗口的大小,因为弹出窗口的标题似乎没有太大的变化。但我还是希望有更好的方法

这是我更新的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\u提示(1,无)
。现在它们是默认值(1,1)。此外,将GridLayout与ScrollView而不是BoxLayout一起使用总是有意义的。BoxLayout仅采用其父级的大小。您需要比其父对象更大的对象,以便它可以滚动

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

另外,我会设置按钮的高度。如果你不设置它们,我不知道它们的高度是从哪里来的。我没有添加这一点,因为我想让我的解决方案尽可能接近您的代码


这很有效。我认为您必须将大小提示设置为“无”,滚动视图才能真正工作,但显然不能