Рисование прямоугольника с заданным цветом - PullRequest
0 голосов
/ 27 января 2020

Что мне делать в приведенном ниже коде, чтобы цвет фона прямоугольника отличался от фона? Я полагаю, что проблема здесь с ScrollView, потому что, когда я изменяю его на RelativeLayout или BoxLayout, тогда я могу нарисовать прямоугольник.

from kivy.config import Config
from kivy.app import App
from kivy.lang.builder import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Rectangle
import copy

Config.set('graphics', 'width', '1280')
Config.set('graphics', 'height', '720')
Config.write()

kv = '''

Main:

    ScrollView:
        canvas.before:
            Color:
                rgba: (0.2, 0.745, 0.745, 1)
            Rectangle:
                pos: self.pos
                size: self.size

        StackLayout:
            canvas.before:
                Color:
                    rgba: (0.2, 0, 0.745, 1)

            height: max(self.minimum_height, root.height)
            size_hint_y: None

'''

class Main(BoxLayout):
    def __init__(self, **kwargs):
        super(Main, self).__init__(**kwargs)
        self.touch_down_pos = [0, 0]

    def on_touch_down(self, touch):

        self.touch_down_pos = copy.deepcopy(touch)
        with self.canvas:
            touch.ud['rectangle'] = Rectangle(pos=(touch.x, touch.y), size=(0, 0))

    def on_touch_move(self, touch):

        touch.ud['rectangle'].size = (touch.x - self.touch_down_pos.x, touch.y - self.touch_down_pos.y)
        return super(Main, self).on_touch_move(touch)

sm = Builder.load_string(kv)

class BajotApp(App):
    def build(self):

        return sm

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

1 Ответ

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

Просто добавьте Color к вашему on_touch_down() методу:

def on_touch_down(self, touch):
    self.touch_down_pos = copy.deepcopy(touch)
    with self.canvas:
        Color(0,1,0,1)
        touch.ud['rectangle'] = Rectangle(pos=(touch.x, touch.y), size=(0, 0))
    return super(Main, self).on_touch_down(touch)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...