在Python的Tkinter中创建和使用大量具有非预设名称的对象



我在用什么:Tkinterlib,setattr()function

我想要的:通过使用for循环创建一些带有一些参数和大致相似名称的小部件。然后,我希望能够使用相同的循环

设置它们的位置我现在的样子:

class Window(Tk):
def __init__(self):
Tk.__init__(self)
for i in range(n):
setattr(Label(self, text=f"name{i}", OTHER_OPTIONS), f"name{i}", _value)
name{i}.place(y=0+10*i)

我期望看到的:从name0到nameN的一列文本,每列之间间隔10个单位

为什么我需要它?:创建一个函数,其中我可以发送参数,如对象的名称,文本,背景和其他标签选项

提前感谢您的回答!

你让事情变得更困难了。只需将标签存储在列表或字典中。

self.labels = []
for i in range(n):
label = Label(self, ...)
self.labels.append(label)

我也强烈建议不要使用place。使用packgrid创建响应式应用程序要容易得多。使用place,你必须做更多的工作,并且很容易创建一个看起来不错的UI,只适合一个特定的配置(分辨率,默认字体,窗口大小)。

最新更新