Форум сайта python.su
Подскажите, пожалуйста, как можно вывести несколько составных объектов на канву?
Например: создать прямоугольник, на нем разместить несколько надписей и картинок, вывести все это на канву и оперировать этим всем как одним объектом, т.е. перемещать, создавать подобные объекты, удалять и т.д. Как создать фигуру и перемещать ее я понимаю, но как рисовать на этой фигуре, как использовать ее как канву?
from tkinter import *
root = Tk()
c = Canvas(root, width=200, height=200, bg='white')
c.pack()
obj = Canvas(c, width=20, height=20, bg='yellow')
obj .pack()
Так получиться?
Отредактировано sd001034 (Июль 15, 2019 21:01:05)
Офлайн
sd001034Все что что рисуется позже будет рисоваться поверх того что уже нарисовано. Те достаточно уметь рисовать на канве.
но как рисовать на этой фигуре, как использовать ее как канву?
sd001034Перемещения, удаления на канве не бывает. Перемещать на канве это обычно все стереть (те нарисовать однотонный прямоугольник на всю канву) и нарисовать все фигуры снова.
т.е. перемещать, создавать подобные объекты,
Отредактировано doza_and (Июль 16, 2019 00:17:19)
Офлайн
sd001034Если вы знаете как создавать и перемещать фигуру, что мешает создать много фигур, задать им один тег и перемещать их как одно целое? Нет никакой разницы между одной фигурой и группой фигур с одинаковым тегом. Смотрите пример:
Как создать фигуру и перемещать ее я понимаю, но как рисовать на этой фигуре, как использовать ее как канву?
from tkinter import Tk, Canvas W, H = 500, 500 #размеры Canvas def move_tag(e): c.scan_dragto(e.x, e.y, gain=1) def cur_coords(e): c.scan_mark(e.x, e.y) root = Tk() c = Canvas(root, width=W, height=H) c.bind('<ButtonPress-1>', cur_coords) c.bind('<B1-Motion>', move_tag) c.pack() c.create_rectangle(110, 210, 310, 410, fill='yellow', tags='asd') c.create_oval(120, 310, 300, 400, fill='green', tags='asd') c.create_text(170, 230, text='Надпись', fill='red', font=("Times", "24", "bold italic"), tags='asd') root.mainloop()
Офлайн