1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
from PySide.QtGui import QApplication, QWidget, QPainter, QImage, QRubberBand, QMainWindow, QAction, QMenuBar, QFileDialog, QScrollArea
from PySide.QtCore import QSize, QRect
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.image = ImageView(QImage())
self.area = QScrollArea(self)
self.area.setWidget(self.image)
self.area.setWidgetResizable(True)
self.setCentralWidget(self.area)
menu = QMenuBar()
self.setMenuBar(menu)
_file = menu.addMenu('File')
# Menu ouvrir
_action = QAction('Ouvrir', _file)
_action.triggered.connect(self.__actionOpen)
_file.addAction(_action)
# Menu sauver
_action = QAction('Sauver', _file)
_action.triggered.connect(self.__actionSave)
_file.addAction(_action)
# Menu fermer
_action = QAction('Fermer', _file)
_action.triggered.connect(self.__actionClose)
_file.addAction(_action)
def __actionOpen(self):
_file = QFileDialog.getOpenFileName(self, "Open Image", "", "Image Files (*.png *.jpg *.bmp)")
if _file:
self.image.setWorkingImage(QImage(_file[0]))
else:
print "Invalid Image"
def __actionSave(self):
_file = QFileDialog.getSaveFileName(parent=None, caption="Save image as")
_result = self.image.workingImage().save(_file[0], "BMP", -1)
# Test to know if it's working
if _result:
print "Saved successfully"
else :
print "Saving failed"
def __actionClose(self):
self.close()
class ImageView(QWidget):
def __init__(self, image, parent=None):
super(ImageView, self).__init__(parent=parent)
self.__image = image
self.__band = QRubberBand(QRubberBand.Rectangle, self)
self.__origin = None
def setWorkingImage(self, img):
self.__image = img
self.setMinimumSize(img.size())
self.update()
def workingImage(self):
return self.__image
def mousePressEvent(self, e):
self.__origin = e.pos()
self.__band.setGeometry(QRect(self.__origin, QSize()))
self.__band.show()
def mouseReleaseEvent(self, e):
self.__band.hide()
print "La selection est :", QRect.intersect(self.__band.geometry(), self.rect())
def mouseMoveEvent(self, e):
self.__band.setGeometry(QRect(self.__origin, e.pos()).normalized())
def paintEvent(self, e):
painter = QPainter(self)
painter.drawImage(self.rect(), self.__image)
if __name__ == '__main__':
app = QApplication([])
win = MainWindow()
win.show()
app.exec_() |
Partager