# Documentations : # https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/doku.php/stu:python_gui:pyqt # https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/index.html from PySide import QtGui,QtCore import sys # Fenêtre principale (c'est une Frame), qui contient : une Frame et une # zone de dessin (dans la frame intérieure) class Fenetre(QtGui.QFrame): def __init__(self,parent=None) : super().__init__(parent) # Titre de l'application : self.setWindowTitle("Example graphique PySide (avec classes...)") # On place une première /Frame/ (conteneur), un peu plus petit. frame = QtGui.QFrame(self) frame.setGeometry(10,10,300,400) frame.setStyleSheet("background:grey") # Puis une zone de dessin (définie dans la classe /ZoneDessin/ plus loin, # qui occupe toute la frame (la plus petite) dessin=ZoneDessin(frame) dessin.setGeometry(0,0,300,400) # Zone principale (dessin) class ZoneDessin(QtGui.QWidget) : def __init__(self,parent=None) : super().__init__(parent) def paintEvent(self,e) : # On demande un pbjet Painter et on dessine dessus p=QtGui.QPainter(self) # On trace un rectangle rouge à bord noir (x,y du coin puis largeur hauteur) p.setPen(QtGui.QColor(0,0,0)) p.setBrush(QtGui.QColor(255,0,0)) p.drawRect(10, 10, 90, 20) # puis un bleu à bord vert p.setPen(QtGui.QColor(0,255,0)) p.setBrush(QtGui.QColor(0,0,255)) p.drawRect(80,20,120,40) # On trace une ligne violette p.setPen(QtGui.QColor(255,0,255)) p.drawLine(0, 0, 200, 300) # On affiche l'image pixmap = QtGui.QPixmap("python.png") p.drawPixmap(78, 78, pixmap) # Si on clique dans la fenêtre, on verra les coordonnées s'afficher dans le terminal def mousePressEvent(self, e): print("clic souris : ",e.x(), e.y()) app=QtGui.QApplication(sys.argv) frame=Fenetre() frame.show() sys.exit(app.exec_())