Skip to main content
 首页 » 编程设计

python之Tkinter 在两个 Canvas 中绘制

2025年05月04日10sky-heaven

我正在 Tkinter 中编写 3 个函数。每个函数都采用 ObjectName(c,x,y) 的形式,其中 c 是 Canvas 的名称。我希望每个函数都在任何给定的 Canvas 上绘制形状。 示例:

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

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

请您参考如下方法:

每次您调用 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()