2

我正在 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() 

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

4

1 回答 1

1

每次调用 line(或 drawLine,因为您的函数名称和用法似乎不一致)时,您的代码似乎都在创建一个新的画布对象。您不应该在函数中创建新的根对象和 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()
于 2012-10-31T22:44:36.137 回答