Найти - Пользователи
Полная версия: Как вывести несколько сложных объектов на канву?
Начало » GUI » Как вывести несколько сложных объектов на канву?
1
sd001034
Подскажите, пожалуйста, как можно вывести несколько составных объектов на канву?
Например: создать прямоугольник, на нем разместить несколько надписей и картинок, вывести все это на канву и оперировать этим всем как одним объектом, т.е. перемещать, создавать подобные объекты, удалять и т.д. Как создать фигуру и перемещать ее я понимаю, но как рисовать на этой фигуре, как использовать ее как канву?

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()

Так получиться?
doza_and
sd001034
но как рисовать на этой фигуре, как использовать ее как канву?
Все что что рисуется позже будет рисоваться поверх того что уже нарисовано. Те достаточно уметь рисовать на канве.

sd001034
т.е. перемещать, создавать подобные объекты,
Перемещения, удаления на канве не бывает. Перемещать на канве это обычно все стереть (те нарисовать однотонный прямоугольник на всю канву) и нарисовать все фигуры снова.
rami
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()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB