繁体   English   中英

在Python中制作唯一标识符

[英]Making unique identifier in Python

我用十个椭圆制作了一个简单的程序。 稍后我将与他们合作,并且需要移动椭圆形,因此每个椭圆形都需要唯一的名称。 但是,椭圆形很多,所以我不想在新的代码行中制作每个椭圆形。 我使用了循环,但随后无法为其指定唯一的名称。 例如:

  • self.oval_id1 = self.canvas.create_oval(40,40,60,60)

  • self.oval_id2 = self.canvas.create_oval(60,40,80,60)...等

有什么办法可以让这样的名字循环吗?

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()

即使技巧可以使您实现目标,您也不希望那样做。 您需要使其可迭代,请首先使用可迭代的容器,此处为列表。

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个椭圆形

您可能需要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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM