我是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
的错误。我该怎么做才能解决它?
谢谢!
答案 0 :(得分:-1)
您可以像这样使用getattr
和setattr
。我还没有完全满足你的要求。为什么可以直接使用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