Позиционирование холста в kivy с использованием self.size

#python #kivy

#python #kivy

Вопрос:

У меня небольшая проблема с позиционированием холста в kivy. Я хочу использовать размер экрана, чтобы один прямоугольник оказался в правом верхнем углу экрана, а другой — в (0, 0), но y экрана при рисовании прямоугольников по какой-то причине равен 100, хотя это, очевидно, не так. Вот код, так вам будет легче понять. Пожалуйста, скажите мне, чего мне не хватает? И, конечно, если у вас есть какие-то вопросы, пожалуйста, задавайте.

 from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle


class GameWidget(Widget):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        with self.canvas:

            print(self.size[1])
            self.rect = Rectangle(pos=(0, 0), size=(150, 150))
            self.rect2 = Rectangle(pos=self.size, size=(150, 150))


class MyApp(App):
    def build(self):
        return GameWidget()

if __name__ == "__main__":
    app = MyApp()
    app.run()
 

Комментарии:

1. Вы рисуете свои прямоугольники на основе self.size в момент создания экземпляра, который на данный момент равен (100, 100). Вам нужно привязать функцию к событию изменения размера GameWidget и в обратном вызове обновить позиции прямоугольника.

2. вы должны прослушать изменение размера … или просто использовать виджет пропорционального размера…

3. Спасибо за вашу помощь. Не могли бы вы опубликовать какой-нибудь код? Я понял это частично, но не полностью. Еще раз спасибо.

4. @inclument есть ли способ нарисовать эти прямоугольники, когда окно полностью загружено? Или не могли бы вы уточнить решение с помощью события изменения размера?

5. inclem.net/2019/12/18/kivy/kivy_tutorial_005_a_drawing_app