Python 在kivy中访问画布矩形

Python 在kivy中访问画布矩形,python,kivy,kivy-language,Python,Kivy,Kivy Language,我是kivy的新手,访问画布矩形时遇到了这个问题。我需要在整个代码中加载图像时保持更新,因此窗口的大小会发生变化,但与文本框或图像等其他属性不同,我无法使用id或组访问它。非常感谢您的帮助:) 我的python代码: import kivy from kivy.lang import Builder from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.uix.label import Labe

我是kivy的新手,访问画布矩形时遇到了这个问题。我需要在整个代码中加载图像时保持更新,因此窗口的大小会发生变化,但与文本框或图像等其他属性不同,我无法使用id或组访问它。非常感谢您的帮助:)

我的python代码:

import kivy
from kivy.lang import Builder
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.widget import Widget

GUI = Builder.load_file('style.kv')


class NotebookScreen(GridLayout):

    def __init__(self, **kwargs):
        self.rows = 1
        super(NotebookScreen, self).__init__(**kwargs)
        self.bind(pos=self.update_background, size=self.update_background)


    def update_background(self, *args):
        background = self.ids

        #can't seem to access rectangle here...

        # background.size = self.size
        # background.pos = self.pos


class MainApp(App):

    def build(self):
        return NotebookScreen()


if __name__ == "__main__":
    MainApp().run()
我的kv代码:

<NotebookScreen>
    GridLayout:
        id: back_layout
        cols: 1
        rows: 1
        canvas:
            Color:
                rgba: 1, 1, 1, 1
            Rectangle:
                id: rect
                pos: self.center
                size: self.width, self.height

        Image:
            id: notebook_image
            source: 'images/notebook.jpg'

网格布局:
id:后视图布局
科尔斯:1
行数:1
画布:
颜色:
rgba:1,1,1,1
矩形:
id:rect
位置:自我中心
尺寸:自宽、自高
图片:
id:笔记本电脑图像
资料来源:“images/notebook.jpg”

我认为您可以通过包含在其中的GridLayout的
画布访问它。children
属性。您的
GridLayout
中的
矩形应该自动更新(感谢
kv
)。请注意,设置
pos:self.center
会将
矩形的左下角放置在
GridLayout
的中心。我认为您可以通过它所包含的GridLayout的
canvas.children
属性访问它。您的
GridLayout
中的
矩形应该会自动更新(感谢
kv
)。请注意,设置
pos:self.center
会将
矩形的左下角置于
网格布局的中心。