Python动态创建一组变量

2024-10-01 17:36:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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对象(自拍海报*). 你知道吗

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

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。我该怎么做才能修好它?你知道吗

谢谢!你知道吗


Tags: 代码图像selfuiinitdefjpgimages
2条回答

所有python变量都只是字典键。如果需要,可以向这样的对象添加变量

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

或者如果你想在全球范围内这样做

global()["variable"] = 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)

相关问题 更多 >

    热门问题