如何在父画布中创建子画布

时间:2015-09-13 18:52:54

标签: python tkinter

我有主画布

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

然后这个新对象取代了我的主画布

1 个答案:

答案 0 :(得分:2)

如果您希望内部画布(或任何其他小部件)成为画布的一部分(即:与线条和其他对象一起滚动),请使用画布的create_window方法。

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轴始终高于任何绘制的项目。换句话说,它总是出现在任何线条,矩形等之上。