Соединение элементов холста вместе в Tkinter

То, что я хотел бы сделать, это визуально «соединить» элементы на холсте. Например, позволяя пользователю провести линию от одного изображения ко второму изображению, а затем эти два изображения соединяются.

Под соединением здесь я подразумеваю, что если пользователь нажимает и перемещает одно изображение, размер строки изменяется, чтобы сохранить соединение. По сути, изображения станут конечными точками линии, и к третьему изображению может быть подключено более одного изображения.

Есть ли способ определить, касается ли линия края изображения?

Это подводит меня ко второму вопросу: есть ли способ изменить размер линий на холсте таким динамическим образом? Решение, которое я пробовал, - это в основном удаление исходной строки и перерисовка новой строки, но это не совсем то, что мне хотелось бы.


person user2148990    schedule 26.03.2013    source источник


Ответы (1)


Вы можете изменить конечные точки линий (таким образом, перемещая их или делая их длиннее или короче), используя координаты. Вам придется отслеживать линии, связанные с объектом, и обновлять конечные точки при перемещении изображения.

person Bryan Oakley    schedule 26.03.2013
comment
У меня есть ссылки на сохраненные строки, так что это работает, с чем мне сложнее, так это с тем, что я только что прокомментировал выше, то есть я не уверен, как определить, коснулась ли линия края изображение. - person user2148990; 26.03.2013
comment
@user2148990 user2148990: вы не можете определить, соприкасаются ли два объекта, не проведя математику самостоятельно. Возможно, вместо того, чтобы соединять линию с краем изображения, вы соединяетесь с центром изображения. Тогда вам просто нужно вести небольшой список объектов, с которыми связана каждая линия, а координаты линии — это просто центральные точки двух изображений, которые она соединяет. - person Bryan Oakley; 26.03.2013
comment
Я думал об этом, но я хочу иметь возможность соединить две строки с одним изображением, каждая строка представляет другой ввод. Я думаю, что для пользователя было бы запутанным, если бы обе линии попадали в середину изображения. Также я могу соединить несколько изображений вместе, и снова все эти линии, исходящие из центра, могут выглядеть странно. - person user2148990; 26.03.2013