Я хочу сделать это диалог развернуть по горизонтали, чтобы показать все изображения. Я не хочу, чтобы он расширялся вертикально, так как будет полоса прокрутки. 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_())
Это сработало отлично! Благодаря! Чтобы учесть ширину полосы прокрутки, я использовал (vars из моего примера): self.scrollArea.setMinimumWidth (self.gLayoutScroll.sizeHint(). Width() + self.scrollArea.verticalScrollBar(). SizeHint(). Width()) –
@ChristopherBrown Я рад, что это сработало и для вас. Если вам нравится мой ответ, вы также можете дополнительно увеличить его (если хотите). – Trilarion