Способы привязки:
Использование абсолютных координат:
- При создании объекта, задайте его координаты относительно левого верхнего угла Canvas.
- Для привязки к другому объекту, вычислите нужные координаты, используя координаты другого объекта.
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
square1 = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
square2 = canvas.create_rectangle(150, 50, 200, 100, fill="red")
# Привязать square2 к правому краю square1
canvas.coords(square2, 100, 50, 150, 100)
root.mainloop()
Использование метода move:
- Создайте объекты.
- Используйте canvas.move(id, dx, dy) для перемещения объекта.
- Рассчитайте значения dx и dy относительно другого объекта.
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
square1 = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
square2 = canvas.create_rectangle(150, 50, 200, 100, fill="red")
# Привязать square2 к правому краю square1
canvas.move(square2, -50, 0)
root.mainloop()
Использование canvas.coords:
- Создайте объекты.
- Используйте canvas.coords(id, x1, y1, x2, y2) для изменения координат объекта.
- Рассчитайте значения x1, y1, x2, y2 относительно другого объекта.
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
square1 = canvas.create_rectangle(50, 50, 100, 100, fill="blue")
square2 = canvas.create_rectangle(150, 50, 200, 100, fill="red")
# Привязать square2 к правому краю square1
x1, y1, x2, y2 = canvas.coords(square1)
canvas.coords(square2, x2, y1, x2 + 50, y2)
root.mainloop()
Дополнительные замечания:
- Для более сложных привязок (например, вращение, масштабирование) вам понадобится использовать преобразования координат.
- Привязка объектов может быть реализована через использование классов и методов.
- Можно создать отдельный класс для управления привязкой объектов.