在Python / PyQt4中动态分配实例

时间:2013-06-25 19:58:59

标签: python dynamic pyqt4 instances getattr

好吧,这可能是重复的,但由于我无法从(可能)类似的问题中得到任何结果,这是我的:我正在开发一个小的PyQt4程序,我可以输入一首歌的名字在QLineEdit中,然后在它下面添加一个QLabel。我希望每个标签旁边都有一个按钮,用于在单击时删除标签。相关代码:

    def Add(self):


        self.rf= QtGui.QLabel(self.le1.text(),self)
        self.rf.move(45,30)
        self.rf.resize(450,30)
        self.rf.show()


        self.x = QtGui.QPushButton("X",self)
        self.x.move(10,30)
        self.x.resize(30,30)
        self.x.show()
        self.x.clicked.connect(self.Del)


    def Del(self):

        self.rf.close()
        self.x.close()

现在,我不理解的是我如何为每个动态添加的Qlabels分配不同的实例,以便在单击按钮时删除特定的实例。

我最好的想法是创建一个变量,其中包含一个数字,该数字会随着每个添加的QLabel而变化,例如var = rf + str(num)和num = 0,然后为每个QLabel添加1到num然后使用getattr对于实例,所以getattr(self,var)= Qtgui.QLabel(...),遗憾的是它给了我一个错误,我无法将该值赋给该函数。我不能创建一个字典,因为我必须有不同的实例。

非常感谢任何想法,非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以将它们全部保存在dict中,然后将其键入标签文本。它还提供了一种检查重复项的快速方法。