Я включил функцию рисования круга в моем приложении. Однако радиус и длина дуги окружности определяются через значение ползунка. Я хочу, чтобы мой круг нарисовался на другом виджете, а слайдер - на другом.
Вот мой файл Kv, включающий класс виджетов с ползунком
<Compass_slider>:
radius:radius
arc:arc
canvas:
Color:
rgb: 0.8, 0.8, 0.8,1
Rectangle:
pos:root.pos
size:root.size
BoxLayout:
pos:
root.pos
size:
root.size
orientation: 'vertical'
Slider:
id:radius
min: 0.
max: 50.
step:1
value_track_color:1,0,0,1
Label:
color:1,0,0,1
pos:root.pos
text: 'radius = {}'.format(radius.value)
Slider:
id: arc
min:0.
max: 360.
value:0
step:1
value_track_color:1,0,0,1
Label:
color:1,0,0,1
pos:root.pos
text: 'arc = {}'.format(arc.value)
и мой python-файл класса виджетов, где я хочу, чтобы мой круг рисовался с радиусом и дугой, определенной с помощью slider.Я также хотел бы быть центром круга в позиции touch_down.
class MyPaintWidget(Widget):
global undolist
global objects
def __init__(self, **kwargs):
super(MyPaintWidget, self).__init__(**kwargs)
self.touch_init = 0, 0
self.circle = Line()
def undo(self, obj):
if len(objects) > 0:
item = objects.pop(-1)
self.canvas.remove(item)
def on_touch_down(self, touch):
if icons["eraser"]:
with self.canvas:
Color(1, 1, 1, 1)
Rectangle(pos=(touch.x - d, touch.y - d), size=(2 * d, 2 * d))
elif icons["compass"]:
pass
Я думаю, что-то вроде
elif icons["compass"]:
Line(circle=(touch.x,touch.y,compass_slider().radius.value,0,compass_slider().arc.value))