【发布时间】:2019-12-11 01:10:01
【问题描述】:
我有以下代码,其中我创建了一个类 Display 的许多实例,然后在每个类中我调用函数 display,它显示数据
from tkinter import *
class Display:
def __init__(self, x, y):
self.x = x
self.y = y
def display(self):
canvas.create_oval(self.x,self.y,self.x+10,self.y+10,fill="lime")
def show(inst):
makeFun = Tk()
canvas = Canvas(makeFun, width=800, height=700)
makeFun.title("Test Evolution")
canvas.pack()
instance = [Display(random.randrange(300,700),random.randrange(300,700)) for a in range(inst)]
for a in range(inst):
instance[a].display()
canvas.mainloop()
但是当我调用函数时...
show(10)
它返回一个错误说:
NameError: name 'canvas' is not defined
【问题讨论】:
-
函数中创建的变量是
local,你不能在其他函数中访问它。在课堂上你应该使用self.canvas,但首先你应该将画布发送到课堂 -__init__(self, canvas, x, y)__: self.canvas = canvas。或使用def display(self, canvas): -
BT:W 而不是
for a in range(inst): instance[a].dosplay()你应该使用for item in instance: item.display()- 它在 Python 中更受欢迎,因为它更具可读性。
标签: python function class animation tkinter