我制作了一个带有十个椭圆形的简单程序。我稍后会和他们一起工作,我需要移动椭圆,所以我需要每个椭圆的唯一名称。但是,有很多椭圆形,所以我不想在新的代码行上制作每个椭圆形。我使用了循环,但后来我无法为它们创建唯一的名称。例如:
self.oval_id1 = self.canvas.create_oval(40,40,60,60)
self.oval_id2 = self.canvas.create_oval(60,40,80,60)... etc
有没有办法在循环中制作这样的名字?
import tkinter
class Main:
def __init__(self):
self.canvas = tkinter.Canvas(width=500, height=300)
self.canvas.pack()
x, y = 50, 50
for i in range(10):
self.canvas.create_oval(x-10,y-10,x+10,y+10)
x += 30
main = Main()
答案 0 :(得分:2)
即使技巧可以让你实现这一点,你也不希望如此。你需要它可迭代,首先使用一个可迭代的容器,这里是一个列表。
class Main:
def __init__(self):
self.canvas = tkinter.Canvas(width=500, height=300)
self.canvas.pack()
self.oval_id = []
x, y = 50, 50
for i in range(10):
self.oval_id.append(self.canvas.create_oval(x-10,y-10,x+10,y+10))
x += 30
您现在可以使用self.oval_id[i]
访问第i个椭圆
答案 1 :(得分:0)
您可能需要setattr
:
所以,比如:
class Main:
def __init__(self):
self.canvas = tkinter.Canvas(width=500, height=300)
self.canvas.pack()
x, y = 50, 50
for i in range(10):
oval = self.canvas.create_oval(x-10,y-10,x+10,y+10)
setattr(self, 'oval_%d' % i, oval)
x += 30