這是一種方法。首先,要在Tk畫布上繪製矩形,您需要調用畫布的create_rectangle
方法。我還使用__init__
方法來存儲矩形的屬性,以便您只需將畫布對象作爲參數傳遞給矩形的draw()
方法。
from Tkinter import *
class Rectangle():
def __init__(self, coords, color):
self.coords = coords
self.color = color
def draw(self, canvas):
"""Draw the rectangle on a Tk Canvas."""
canvas.create_rectangle(*self.coords, fill=self.color)
master = Tk()
w = Canvas(master, width=300, height=300)
w.pack()
rect1 = Rectangle((0, 0, 100, 100), 'blue')
rect1.draw(w)
mainloop()
編輯
回答你的問題:是什麼在self.coords
面前*
?
要在Tk畫布上創建矩形,請按以下方式調用create_rectangle
方法。
Canvas.create_rectangle(x0, y0, x1, y1, option, ...)
所以每個COORDS(x0
,y0
等)是indiviual PARAMATERS給方法。但是,我將Rectangle類的座標存儲在一個4元組中。我可以將這個單個元組傳遞給方法調用,並將它放在前面將其解壓縮爲四個單獨的座標值。
如果我有self.coords = (0, 0, 1, 1)
,那麼create_rectangle(*self.coords)
將最終爲create_rectangle(0, 0, 1, 1)
而不是create_rectangle((0, 0, 1, 1))
。請注意第二個版本中的內部圓括號。
Python文檔在unpacking argument lists中對此進行了討論。
self.coords前的'*'是什麼? – 2010-08-13 17:58:14