Tkinter画了两幅画布

时间:2012-10-27 09:54:03

标签: python tkinter

我在Tkinter写了3个函数。每个函数的形式为ObjectName(c,x,y),其中c是画布的名称。我希望每个函数在任何给定的画布中绘制形状。 示例:

from Tkinter import *
root = Tk()

def line(c,x,y):
    root = Tk()
    c = Canvas(root, width=600, height=800)
    c.pack()
    c.create_line(x-160,y,x+300,y)

drawLine(c,200,300)
root.mainloop() 

问题: 当我调用相同的函数在同一个画布上绘制两个形状时,它会绘制两个不同的画布:(

1 个答案:

答案 0 :(得分:1)

每次调用line(或drawLine时,您的代码都会创建一个新的canvas对象,因为您的函数名称和用法似乎不一致。)您不应在函数中创建新的根对象和Canvas对象。

尝试这样的事情:

from Tkinter import *

def drawLine(c, x, y):
    c.create_line(x - 160, y, x + 300, y)

root = Tk()
c = Canvas(root, width=600, height=800)
c.pack()

drawLine(c, 200, 300)
drawLine(c, 300, 400)
drawLine(c, 350, 450)

root.mainloop()