2012-07-06 157 views
1

我有以下代碼,從磁盤加載圖像,並嘗試將其縮小到30 x 30。稍後我將標籤添加到網格佈局。不幸的是,圖像沒有縮小到預期的大小,因此網格佈局中的所有單元格都有不同的大小。縮小圖像

pixmap = QtGui.QPixmap(filename) 
pixmap.scaled(QtCore.QSize(30,30), QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation) 
self.L.append(pixmap) 
lbl = QtGui.QLabel(self) 
lbl.setPixmap(pixmap) 
lbl.setScaledContents(True) 
column=len(self.L) 
self.ui.gridLayout.addWidget(lbl,0,column,Qt.AlignLeft | Qt.AlignTop) 

回答

2

您確定pixmap.scaled可以對圖像進行就地轉換嗎?我希望它會返回一個新的縮放圖像 - 將其分配給一個變量並使用它。

根據this documentation

返回圖像的縮放副本。使用指定的轉換模式將返回的圖像縮放到給定的高度。自動計算像素圖的寬度,以保持像素圖的寬高比。

所以,我想你應該做的:

pixmap = QtGui.QPixmap(filename) 
# FIXED: 
scaled_pixmap = pixmap.scaled(QtCore.QSize(30,30), QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation) 
self.L.append(scaled_pixmap) # FIXED 
lbl = QtGui.QLabel(self) 
lbl.setPixmap(pixmap) 
lbl.setScaledContents(True) 
column=len(self.L) 
self.ui.gridLayout.addWidget(lbl,0,column,Qt.AlignLeft | Qt.AlignTop) 
+0

衛生署..這是愚蠢的,THX的幫助 – 2012-07-06 10:52:14

+0

@NunoFurtado,沒問題;) – 2012-07-06 10:53:49