【问题标题】:Image in Kivy Scrollview isn't scorllableKivy Scrollview 中的图像不可滚动
【发布时间】:2020-05-17 09:09:54
【问题描述】:

我正在尝试使用 kivy 制作一个笔记本应用程序,用户可以在其中上下滚动工作表并在其上书写。我尝试使用 ScrollView,但它似乎不起作用 - 我希望将工作表图像拉伸到窗口的宽度,并且高度大于宽度 - 让图像上下滚动。相反,发生了这样的事情:

我非常感谢任何研究代码并试图找出我做错了什么的人:)

python 代码:


import kivy
from kivy.lang import Builder
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from PIL import Image as Image1
from kivy.uix.image import Image

GUI = Builder.load_file('style.kv')
Window.size = (1000, 200)

img_size = Image1.open("images/notebook.png").size


class NotebookScreen(GridLayout):

    def __init__(self, **kwargs):
        self.rows = 1
        super(NotebookScreen, self).__init__(**kwargs)

    def get_size_for_notebook(self, **kwargs):
        global img_size
        width, height = Window.size
        return width, (img_size[0] * height / width)


class MainApp(App):

    def build(self):
        return NotebookScreen()


if __name__ == "__main__":
    MainApp().run()


kv 文件:

<NotebookScreen>
    FloatLayout:
        rows: 2
        GridLayout:
            size_hint: 1, .05
            pos_hint: {"top": 1, "left": 1}
            id: tool_bar
            cols: 1
            canvas:
                Color:
                    rgba: 0, 0, 1, 1
                Rectangle:
                    pos: self.pos
                    size: self.size
        GridLayout:
            id: notebook_grid
            size_hint: 1, .95
            pos_hint: {"top": .95, "left": 0}
            cols: 1

            ScrollView:

                Image:
                    id: notebook_image
                    source: 'images/notebook.png'
                    allow_stretch: True
                    keep_ratio: True
                    pos: self.pos
                    size: root.get_size_for_notebook()

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    问题是您在kv 中设置了Imagesize,但它没有效果,因为size_hint 超过了size。默认的size_hint(1,1),所以不会滚动(Image 被限制为适合ScrollView)。要让您的size 生效,只需添加:

    size_hint: None, None
    

    到您的kv 中的Image

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 2015-12-03
      • 1970-01-01
      • 2018-07-29
      • 2013-04-13
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多