通常我永远不会想要这样做,但在这种情况下,我觉得似乎别无选择。我正在pyqt中构建一个程序,它有许多标签小部件,除了几何上的几个位置外,其中很多都是相同的。
我想自动声明它们,而不是逐行声明它们占用了很多行。它看起来也很难看。
有没有办法说创建十个变量,如var1,var2,var3等,而不必逐行声明它们?
现在我的代码看起来像 -
self.folderheader1 = QtGui.QLabel(self.folders)
self.folderheader2 = QtGui.QLabel(self.folders)
self.folderheader3 = QtGui.QLabel(self.folders)
self.folderheader4 = QtGui.QLabel(self.folders)
...
答案 0 :(得分:8)
您可以使用setattr
执行此操作,但我不推荐:
for i in range(1,5):
setattr(self, 'folderheader%s' % i, QtGui.QLabel(self.folders))
相反,我可以建议list
吗?
self.folderheaders = [QtGui.Qlabel(self.folders) for _ in range(1, 5)]
现在取代self.folderheaders1
而不是self.folderheaders[0]
,这并不是真的那么不同......
答案 1 :(得分:1)
您可以使用dict
这样的
self.foldersdict = {}
for i in range(100):
self.foldersdict[i] = QtGui.QLabel(self.folders)
您可以稍后像这样访问它们,
self.foldersdict[1]