Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PySide2.QtWidgets import QApplication, QMainWindow, QHBoxLayout, \
- QVBoxLayout, QPushButton, QListWidget, QLabel, QWidget, QFileDialog
- from PySide2.QtCore import Signal
- import sys, os
- class ImageViewer(QMainWindow):
- def __init__(self):
- super(ImageViewer, self).__init__()
- self.setWindowTitle("Simple Photo Viewer")
- # self.showMaximized()
- # must create a central widget!
- centralWidget = QWidget()
- self.setCentralWidget(centralWidget)
- mainLayout = QHBoxLayout(centralWidget)
- sideLayout = QVBoxLayout()
- mainLayout.addLayout(sideLayout)
- # create left side widgets
- self.fileBrowser = FolderList()
- photoData = PhotoData()
- browseButton = QPushButton("Browse...")
- sideLayout.addWidget(self.fileBrowser)
- sideLayout.addWidget(photoData)
- sideLayout.addWidget(browseButton)
- # add imageViewer
- imageViewer = PhotoViewer()
- mainLayout.addWidget(imageViewer)
- # connect signals
- browseButton.clicked.connect(self.browseAction)
- self.fileBrowser.imageSelected.connect(imageViewer.setImage)
- def browseAction(self):
- folder = QFileDialog.getExistingDirectory(self, "Select Folder")
- if len(folder):
- self.fileBrowser.setCurrentFolder(folder + "/")
- class FolderList(QListWidget):
- imageSelected = Signal(str)
- def __init__(self):
- super(FolderList, self).__init__()
- self.currentFolder = None
- self.itemClicked.connect(self.imageSelectedAction)
- def refresh(self):
- self.clear()
- if not self.currentFolder: return
- fileList = [i for i in os.listdir(self.currentFolder) if i.lower().endswith(".jpg")]
- for f in fileList:
- self.addItem(f)
- def imageSelectedAction(self, currentItem):
- self.imageSelected.emit(self.currentFolder + currentItem.text())
- def setCurrentFolder(self, folderPath):
- if os.path.exists(folderPath):
- self.currentFolder = folderPath
- self.refresh()
- class PhotoViewer(QLabel):
- def __init__(self):
- super(PhotoViewer, self).__init__()
- self.setText("IMAGE")
- self.setMinimumSize(500,500)
- def setImage(self, path):
- self.setPixmap(path)
- class PhotoData(QWidget):
- def __init__(self):
- super(PhotoData, self).__init__()
- self.setMinimumSize(100, 100)
- mainLayout = QVBoxLayout(self)
- dateLabel = QLabel("Date:")
- cameraLabel = QLabel("Camera:")
- isoLabel = QLabel("ISO:")
- mainLayout.addWidget(dateLabel)
- mainLayout.addWidget(cameraLabel)
- mainLayout.addWidget(isoLabel)
- # init window
- app = QApplication(sys.argv)
- win = ImageViewer()
- win.show()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement