Python - 动态创建一堆变量

时间:2017-05-10 00:45:37

标签: python pyqt

我是Python新手,我制作了一段代码如下:

class Ui(QWidget):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('logotest.ui', self)
    iposter1 = QPixmap('images/1.jpg')
    iposter2 = QPixmap('images/2.jpg')
    iposter3 = QPixmap('images/3.jpg')
    iposter4 = QPixmap('images/4.jpg')
    self.poster1.setPixmap(iposter1)
    self.poster2.setPixmap(iposter2)
    self.poster3.setPixmap(iposter3)
    self.poster4.setPixmap(iposter4)

代码执行此操作:将4个图像(1-4.jpg)设置为QPixmaps(iposter *)并将其用于4个QLabel对象(self.poster *)。

然而,由于我有很多要处理的图像,我想使用一个函数为我做这些工作,所以我写道:

def setPoster(a):
    imagelink = "images/" + str(a) + ".jpg"
    iposter, a = QPixmap(imagelink)
    self.poster, a.setPixmap(iposter, a)
...
setPoster(1)

但这不起作用,因为Python给了我TypeError: 'QPixmap' object is not iterable的错误。我该怎么做才能解决它?

谢谢!

2 个答案:

答案 0 :(得分:-1)

您可以像这样使用getattrsetattr。我还没有完全满足你的要求。为什么可以直接使用self.poster4?我认为以下代码可能会对您有所帮助。

for i in range(100):
    iposter = QPixmap('images/3.jpg')
    poster = getattr(self, 'iposter%d' % i)
    poster.setPixmap(iposter)

更新

class Ui(QWidget):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('logotest.ui', self)
    def setPoster(self, a):
       iposter = QPixmap('images/%d.jpg' % a)
       poster = getattr(self, 'iposter%d' % a)
       poster.setPixmap(iposter)

答案 1 :(得分:-2)

所有python变量都只是字典键。如果你愿意,你可以添加变量到像这样的对象

object.dict()["variable"] = 1

或者如果您想全局地执行此操作

global()["variable"] = 1