import sys from PyQt5 import (QtWidgets, QtCore) ############################################################################# class Fenetre(QtWidgets.QWidget): # ======================================================================== def __init__(self, parent=None): super().__init__(parent) self.resize(300, 200) self.setWindowTitle("Visualisation d'image Landsat") # Création du bouton charger self.buttonCharg = QtWidgets.QPushButton('Charger') self.buttonCharg.clicked.connect(self.charger) self.buttonCharg.setDefault(True) # Bouton de taille fixe, centré # self.buttonCharg.setFixedSize(self.buttonCharg.sizeHint()) # hLayout = QHBoxLayout() # hLayout.addWidget(self.buttonCharg, Qt.AlignHCenter) # Création du menu de changement de canal self.cb = QtWidgets.QHBoxLayout() self.cb = QtWidgets.QComboBox() self.cb.addItems(["Rouge", "Vert", "Bleu", "Infrarouge"]) self.cb.currentIndexChanged.connect(self.selectionchange) # Création du bouton OK self.buttonOk = QtWidgets.QPushButton('OK') self.buttonOk.clicked.connect(self.OK) self.buttonOk.setDefault(True) # Creation de la zone # self.pixmap = QtWidgets.QPixmap() # self.setWindowTitle('Images') # self.setLayout(self.vLayout) # Memorisation du chemin courant self.path = "." posit = QtWidgets.QGridLayout() posit.addWidget(self.buttonCharg, 0, 0) posit.addWidget(self.cb, 1, 0) posit.addWidget(self.buttonOk, 2, 0) self.setLayout(posit) def selectionchange(self, i): print "Les canaux possibles sont :" for count in range(self.cb.count()): print self.cb.itemText(count) print "Canal", i, "Canal changé", self.cb.currentText() def charger(self): # Demande le nom du fichier à charger fileToOpen, _ = QtWidgets.QFileDialog.getOpenFileName(None, 'Open a File', self.path, '*.png *.jpg *.gif *.bmp *.Tif *.Tiff') # Isole le chemin memorisé pour la prochaine fois # self.path = os.path.dirname(fileToOpen) # Charge le fichier image self.image.load(fileToOpen) # Calcule le Zoom pour tenir dans les limites de la fenêtre width = self.pixmap.size().width() height = self.pixmap.size().height() if width > 1000 or height > 600: factor = max(width / 1000, height / 600) self.label.setFixedSize(QSize(width / factor, height / factor)) else: self.label.setFixedSize(QSize(width, height)) # Affiche l'image self.label.setPixmap(self.pixmap) # Redimensionne self.setFixedSize(self.vLayout.sizeHint()) def OK (self): QtWidgets.QMessageBox.information(self, "Information", "Click OK !") ############################################################################# if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) fen = Fenetre() fen.show() sys.exit(app.exec_())