2012-10-27 119 views
2

我正在寫Tkinter的3個函數。每個函數的形式爲ObjectName(c,x,y),其中c是畫布的名稱。我希望每個函數在任何給定的畫布中繪製形狀。 例子:Tkinter繪製兩個畫布

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

您的代碼看起來是創建一個新的畫布對象的每個。一次調用線(或的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()