Код: Выделить всё
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle, Color
class CanvasWidget(Widget):
def __init__(self, **kwargs):
super(CanvasWidget, self).__init__(**kwargs)
self.click_occured = False
with self.canvas:
Color(0, 1, 0)
self.background = Rectangle(pos=self.pos, size=self.size)
Color(1, 1, 1)
self.rect1 = Rectangle(pos=self.pos, size=(self.width/2, self.height/2))
Color(0, 0, 1)
self.rect2 = Rectangle(pos=self.pos, size=(self.width/4, self.height/4))
self.bind(pos = self.update_rect, size = self.update_rect)
def update_rect(self, *args):
self.background.pos = self.pos
self.background.size = self.size
if not self.click_occured:
self.rect1.pos = self.pos
else:
self.rect1.pos = self.x + self.width/8, self.y + self.height/8
self.rect1.size = (self.width/2, self.height/2)
self.rect2.pos = self.pos
self.rect2.size = (self.width/4, self.height/4)
def on_touch_down(self, touch):
self.click_occured = True
self.rect1.pos = self.x + self.width/8, self.y + self.height/8
#also, change rect1's color from white to red
class CanvasApp(App):
def build(self):
return CanvasWidget()
CanvasApp().run()
Если возможно, я хотелось бы добиться этого без использования языка kv, поскольку я хочу иметь возможность создавать прямоугольники, метки и т. д. на лету во время выполнения кода, а с языком kv это кажется неудобным.
Подробнее здесь: https://stackoverflow.com/questions/790 ... thon3-kivy