2013-06-03 4 views
1

Код ниже загружает одно изображение. Я хочу загрузить неизвестное количество изображений, которые находятся в папке, и я хочу, чтобы они отображались в виде контактного листа.Как загрузить контактный лист изображений с помощью PySide?

Как изменить приведенный ниже код, чтобы он отобрал список изображений и показал их рядом?

import sys 
from PySide import QtGui, QtCore 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self):  

     hbox = QtGui.QHBoxLayout(self) 
     pixmap = QtGui.QPixmap("myImage.jpg") 

     lbl = QtGui.QLabel(self) 
     lbl.setPixmap(pixmap) 

     hbox.addWidget(lbl) 
     self.setLayout(hbox) 

     self.setGeometry(300, 300, 280, 170) 
     self.setWindowTitle('Image viewer') 
     self.show()   

def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

ответ

1

это может в целом, что вы хотите в том числе скроллинга ..

import os 
import sys 
from PySide import QtGui, QtCore 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 

    def initUI(self): 
     self.img_fold = r"C:\Users\abhishek.garg\Desktop\New folder" 

     self.widget_layout = QtGui.QVBoxLayout(self) 
     self.scrollarea = QtGui.QScrollArea() 
     self.scrollarea.setWidgetResizable(True) 
     self.widget_layout.addWidget(self.scrollarea) 
     self.widget = QtGui.QWidget() 
     self.layout = QtGui.QVBoxLayout(self.widget) 
     self.scrollarea.setWidget(self.widget) 

     self.layout.setAlignment(QtCore.Qt.AlignHCenter) 

     for img in os.listdir(self.img_fold): 
      img_path = os.path.join(self.img_fold, img) 

      pixmap = QtGui.QPixmap(img_path) 
      lbl = QtGui.QLabel(self) 
      lbl.setPixmap(pixmap) 

      self.layout.addWidget(lbl) 


     self.setGeometry(300, 300, 280, 170) 
     self.setWindowTitle('Image viewer') 
     self.show() 

def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 
+0

О, это прекрасно - Мне нужны полосы прокрутки :) – fredrik

0

попробовать это:

import sys 
from PySide import QtGui, QtCore 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self): 

     hbox = QtGui.QHBoxLayout(self) 


     img_fold = "C:/my_contacts" 

     for img in os.listdir(img_fold): 
      img_path = os.path.join(img_fold, img) 

      pixmap = QtGui.QPixmap(img_path) 
      lbl = QtGui.QLabel(self) 
      lbl.setPixmap(pixmap) 

      hbox.addWidget(lbl) 

     self.setLayout(hbox) 

     self.setGeometry(300, 300, 280, 170) 
     self.setWindowTitle('Image viewer') 
     self.show() 

def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 
+0

и я также рекомендовал бы использовать макет сетки в случае, если вы хотите чтобы сделать что-то вроде фотоальбома, также вам придется сделать свой прокручиваемый ящик, иначе вы не сможете его использовать, если он отключится от экрана. – abhishekgarg

+0

Это замечательно, спасибо! – fredrik

+0

Любые указатели на перемещение вперед с папкой, содержащей тысячи изображений, и где вы можете сразу показать окно, а затем, чтобы изображения заполнили окно, когда вы можете прокручивать его? – fredrik