Advertisement
robertvari

pyside

Feb 23rd, 2019
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.84 KB | None | 0 0
  1. from PySide2.QtWidgets import QApplication, QMainWindow, QHBoxLayout, \
  2.     QVBoxLayout, QPushButton, QListWidget, QLabel, QWidget, QFileDialog
  3. from PySide2.QtCore import Signal
  4.  
  5. import sys, os
  6.  
  7.  
  8. class ImageViewer(QMainWindow):
  9.     def __init__(self):
  10.         super(ImageViewer, self).__init__()
  11.         self.setWindowTitle("Simple Photo Viewer")
  12.         # self.showMaximized()
  13.  
  14.         # must create a central widget!
  15.         centralWidget = QWidget()
  16.         self.setCentralWidget(centralWidget)
  17.  
  18.         mainLayout = QHBoxLayout(centralWidget)
  19.  
  20.         sideLayout = QVBoxLayout()
  21.         mainLayout.addLayout(sideLayout)
  22.  
  23.         # create left side widgets
  24.         self.fileBrowser = FolderList()
  25.         photoData = PhotoData()
  26.         browseButton = QPushButton("Browse...")
  27.  
  28.         sideLayout.addWidget(self.fileBrowser)
  29.         sideLayout.addWidget(photoData)
  30.         sideLayout.addWidget(browseButton)
  31.  
  32.         # add imageViewer
  33.         imageViewer = PhotoViewer()
  34.         mainLayout.addWidget(imageViewer)
  35.  
  36.         # connect signals
  37.         browseButton.clicked.connect(self.browseAction)
  38.         self.fileBrowser.imageSelected.connect(imageViewer.setImage)
  39.  
  40.     def browseAction(self):
  41.         folder = QFileDialog.getExistingDirectory(self, "Select Folder")
  42.  
  43.         if len(folder):
  44.             self.fileBrowser.setCurrentFolder(folder + "/")
  45.  
  46.  
  47. class FolderList(QListWidget):
  48.     imageSelected = Signal(str)
  49.  
  50.     def __init__(self):
  51.         super(FolderList, self).__init__()
  52.         self.currentFolder = None
  53.  
  54.         self.itemClicked.connect(self.imageSelectedAction)
  55.  
  56.     def refresh(self):
  57.         self.clear()
  58.  
  59.         if not self.currentFolder: return
  60.  
  61.         fileList = [i for i in os.listdir(self.currentFolder) if i.lower().endswith(".jpg")]
  62.  
  63.         for f in fileList:
  64.             self.addItem(f)
  65.  
  66.     def imageSelectedAction(self, currentItem):
  67.         self.imageSelected.emit(self.currentFolder + currentItem.text())
  68.  
  69.     def setCurrentFolder(self, folderPath):
  70.         if os.path.exists(folderPath):
  71.             self.currentFolder = folderPath
  72.             self.refresh()
  73.  
  74. class PhotoViewer(QLabel):
  75.     def __init__(self):
  76.         super(PhotoViewer, self).__init__()
  77.         self.setText("IMAGE")
  78.         self.setMinimumSize(500,500)
  79.  
  80.     def setImage(self, path):
  81.         self.setPixmap(path)
  82.  
  83. class PhotoData(QWidget):
  84.     def __init__(self):
  85.         super(PhotoData, self).__init__()
  86.         self.setMinimumSize(100, 100)
  87.  
  88.         mainLayout = QVBoxLayout(self)
  89.  
  90.         dateLabel = QLabel("Date:")
  91.         cameraLabel = QLabel("Camera:")
  92.         isoLabel = QLabel("ISO:")
  93.  
  94.         mainLayout.addWidget(dateLabel)
  95.         mainLayout.addWidget(cameraLabel)
  96.         mainLayout.addWidget(isoLabel)
  97.  
  98. # init window
  99. app = QApplication(sys.argv)
  100. win = ImageViewer()
  101. win.show()
  102. app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement