有没有一种方法可以自动将图像调整为自然模式?

时间:2020-06-09 17:54:28

标签: python image kivy

我看过一些奇特的教程,他们都说如果屏幕变化,标签,按钮等将被调整。但是我的形象没有。然后我发现这是因为我给了它一个特定的位置。所以我改用root.width和root.height,但是它仍然没有扩大规模。 这是我的代码:

from kivy.app import App
from kivy.graphics import *
from kivy.uix.textinput import TextInput
from kivy.graphics import Rectangle
from kivy.uix.image import Image
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout


class main(GridLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        root = Widget()
        self.search = TextInput(multiline = False, pos = (250, 325), size = (self.width * 3, self.height/2))
        self.add_widget(self.search)
        with self.canvas.before:
            Rectangle(source = 'foundit.png', pos = root.center, size = (root.width*4, root.height*4))



class found_it(App):
    def build(self):
        return main()

if __name__ == '__main__':
    found_it().run()

谢谢您随时提出问题。

1 个答案:

答案 0 :(得分:1)

在python中使用sizeroot.width设置root.height时,将使用sizeroot.width的当前值来设置root.height在执行代码时。通过将更新方法绑定到Rectanglesize,您可以编写代码来更新{{1}的posmain的{​​{1}} pos的属性。

一种更简单的方法是在size中定义main,如下所示:

Rectangle

现在kv会自动反映对<main>: canvas.before: Rectangle: source: 'foundit.png' pos: root.center size: (root.width*4, root.height*4) 的更改,因为main语言会设置您原本必须执行的绑定。您可以使用Rectangle做类似的事情。