我製作了這個模塊叫做gamesmodule,我正在研究一個讓畫面中的球產生並反彈的程序。我用了一個如何在類的__init__函數中使用canvas參數?
class Ball:
def __init__(self, canvas):
self.canvas = canvas
self.id = canvas.create_oval(10, 10, 25, 25, fill='red')
self.canvas.move(self.id, 25, 25)
self.x = 0
self.y = -1
self.canvas_height = self.canvas.winfo_height
self.canvas_width = self.canvas.winfo_width
和初始化函數包含一個畫布參數,輸入一個名稱的畫布。我已經預先定義在畫布上,並創建在類球:
ball = Ball(canvas)
但Python的殼輸出這個錯誤:
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
ball = Ball(canvas)
NameError: name 'canvas' is not defined
您的縮進已關閉。你需要從'self.id'開始的行縮進所有行到最後一級。實際上,'__init__'方法中只有'self.canvas = canvas' – Suever
謝謝。我現在修正了這一點。 – Lumater
在你的代碼中,你定義了一個名爲'canvas'的東西嗎?這個錯誤似乎很明顯。另外,'self.canvas.winfo_height'需要是'self.canvas.winfo_height()'(寬度相同)。這些是功能,而不是屬性。 –