2015-09-13 4 views
-1

У меня есть основной холстКак создать ребенок холст внутри родительского холста

root = Tk() 
canvas = Canvas(root, width=512, height=512) 
canvas.pack() 

И, например классового холст с некоторыми объектами внутри:

class My_object(Canvas): 
    def __init__(self, parent): 
     Canvas.__init__(self, parent) 
     self.create_line(0,0, 100, 100) 
     self.create_oval(0,0, 100, 100) 

Я хотел бы добавить примеры my_object к моему основной холст с определенными координатами. Как это сделать? Если я сделать это:

obj = My_object(canvas) 
obj.pack() 

этот новый объект заменяет мой основной холст

+0

Не могли бы вы объяснить это лучше: «Я хотел бы добавить примеры My_object к моему основному холсту с определенными координатами». и это: «тогда этот новый объект заменяет мой основной холст». Для меня это не так ясно, но, возможно, это только я. Измените свой вопрос с лучшим объяснением. – nbro

+0

Пусть у меня есть класс, который представлен холстом с маленькой окрашенной машиной. Я хочу добавить этот автомобиль в свой основной холст, как прямоугольник или другие объекты вроде: main_canvas.create_rectangle (...) <=> main_canvas.create_car (..) – Mikhail

ответ

2

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

root = Tk() 
canvas = Canvas(root, width=512, height=512) 
canvas.pack() 
... 
child_canvas = My_object(canvas) 
canvas.create_window(100, 100, window=child_canvas) 

Обратите внимание, что встроенные виджеты всегда будут иметь ось z выше, чем любые нарисованные элементы. Другими словами, он всегда будет отображаться поверх любых строк, прямоугольников и т. Д.

Смежные вопросы