2
我想使此對話框水平展開以顯示所有圖像。我不希望它垂直擴展,因爲會有一個滾動條。 sizePolicy
註釋掉的內容不起作用。這些圖像只是四張圖片,並排放置時比窗口寬。使滾動區域水平展開以適應內容
我在做什麼錯?
from PyQt4 import QtGui, QtCore
class Images(QtGui.QDialog):
def __init__(self, pics, size, imagesPerRow=6, imagePopup=True, parent=None):
QtGui.QDialog.__init__(self)
self.scrollArea = QtGui.QScrollArea(self)
self.scrollArea.setWidgetResizable(True)
self.scrollAreaWidgetContents = QtGui.QWidget(self.scrollArea)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
#sp = QtGui.QSizePolicy()
#sp.setHorizontalPolicy(QtGui.QSizePolicy.Expanding)
#self.setSizePolicy(sp)
#self.scrollAreaWidgetContents.setSizePolicy(sp)
#self.scrollArea.setSizePolicy(sp)
self.verticalLayout = QtGui.QVBoxLayout(self)
self.verticalLayout.addWidget(self.scrollArea)
self.gLayoutScroll = QtGui.QGridLayout(self.scrollAreaWidgetContents)
row = col = 0
for pic in pics:
thumb = QtGui.QLabel()
pixmap = QtGui.QPixmap(pic)
pixmap = pixmap.scaled(size, QtCore.Qt.KeepAspectRatioByExpanding, QtCore.Qt.SmoothTransformation)
thumb.setPixmap(pixmap)
self.gLayoutScroll.addWidget(thumb, row, col)
col +=1
if col % imagesPerRow == 0:
row += 1
col = 0
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('myDialog')
main = Images(['one.png','two.png','three.png','four.png'], size=QtCore.QSize(192,192))
main.show()
sys.exit(app.exec_())
這工作得很好!謝謝!爲了說明滾動條寬度,我使用了(從我的示例中的變量):self.scrollArea.setMinimumWidth(self.gLayoutScroll.sizeHint().width()+ self.scrollArea.verticalScrollBar()。sizeHint()。width()) – 2014-09-04 20:03:12
@ChristopherBrown我很高興它爲你工作。如果你喜歡我的答案,你也可以額外支持它(如果你喜歡)。 – Trilarion 2014-09-04 20:04:50