【发布时间】:2019-12-27 16:54:12
【问题描述】:
我有一些图像,大小均为 680 x 1000 像素。我在 Kivy 中设置了一个水平滚动视图(使用 python),我想在其中显示这些图像。问题是当我调整窗口大小时,图像之间的空间会发生变化。到目前为止,这是我的代码:
import kivy
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
class MyGrid(GridLayout):
def __init__(self, **kwargs):
super(MyGrid, self).__init__(**kwargs)
self.rows = 1
self.size_hint = None, .8
self.bind(minimum_width=self.setter('width'))
class MyBox(BoxLayout):
def __init__(self, **kwargs):
super(MyBox, self).__init__(**kwargs)
self.orientation = "vertical"
self.size_hint_x = None
self.bind(minimum_width=self.setter('width'))
class ScrollViewApp(App):
def build(self):
base = FloatLayout()
grid = MyGrid()
grid.width = 680
box = MyBox()
box.add_widget(Widget(size_hint_y=.1))
box.add_widget(grid)
box.add_widget(Widget(size_hint_y=.1))
img = Image(source="img.jpg", allow_stretch=True, keep_ratio=True)
img.stretch = True
img.size = grid.size
grid.add_widget(img)
img = Image(source="img2.jpg", allow_stretch=True, keep_ratio=True)
img.stretch = True
img.size = grid.size
grid.add_widget(img)
scroll = ScrollView(do_scroll_y=False, pos_hint={"center_y": .5})
scroll.add_widget(box)
base.add_widget(scroll)
return base
if __name__ == '__main__':
ScrollViewApp().run()
我发现这篇文章很有用,虽然它似乎没有解决我需要的所有问题:kivy image button size and position
如果我在 kivy 中拥有最大尺寸的图像,我会得到以下信息:
这些图片靠得太近了!在另一端,如果我缩小窗口,我会得到:
现在他们离得太远了!我怎样才能做到这一点,以便随着图像尺寸的增大或缩小,它们彼此之间保持相同的水平距离?即使我在 MyGrid() 类中添加填充,我仍然有同样的问题。
【问题讨论】:
标签: python python-3.x kivy