Задание размеров виджету и рисование в нем - PullRequest
0 голосов
/ 27 января 2020

Я хотел бы создать виджет с фиксированным размером и фоном. Он должен быть добавлен первым в BoxLayout. Я хотел бы нарисовать линию внутри этого виджета, чтобы он был виден только в нем и размещен по отношению к нему. Вводя (0,0) положение строки, я имею в виду начало виджета, а не все окно приложения. Как добиться этого эффекта?

from random import random
from kivy.app import App
from kivy.graphics import Color, Ellipse, Line
from kivy.uix.button import Button
from kivy.uix.widget import Widget

class CombWidget(Widget):
    pass

class MyPaintWidget(Widget):
    def __init__(self, **kwargs):
        super(MyPaintWidget, self).__init__(**kwargs)

class MyPaintApp(App):
    def build(self):
        return CombWidget()

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

и файл kv

<CombWidget>:
    BoxLayout:
        orientation: 'vertical'
        size: root.size
        padding: 20
        spacing: 50

        MyPaintWidget:
            size: 400, 400
            size_hint: 400, 400

            canvas.before:
                Color:
                    rgba: 1, 1, 1, 1
                Rectangle:
                    pos: self.pos
                    size: self.size

            canvas:
                Color:
                    rgba: 0, 0, 0, 1
                Line:
                    points: 0, 0, 200, 200


        Button:
            text: "Hallo"
        Button:
            text: "Hallo 1"
        Button:
            text: "Hallo 2"

Прямо сейчас у меня есть что-то вроде этого: enter image description here

Но я хотел бы получить что-то вроде этого: enter image description here

Я хотел бы иметь возможность рисовать только в этом виджете и указывать позиции нарисованных элементов по отношению к нему.

1 Ответ

1 голос
/ 28 января 2020

Вам просто нужно настроить points из Line:

        canvas:
            Color:
                rgba: 0, 0, 0, 1
            Line:
                points: self.x, self.y, self.x + 200, self.y + 200
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...