Developpez.com - PyQt & PySide
X

Choisissez d'abord la catégorieensuite la rubrique :

FAQ Qt FAQ Qt Creator FAQ PyQt & PySide
logo
Sommaire > QtGui > Débuter
        Comment créer simplement une application graphique ?
        Comment afficher une image dans mon interface ?
        Comment déplacer et/ou redimensionner un widget ?





Comment créer simplement une application graphique ?
auteur : Jiyuu
La manière la plus simple de créer une application graphique en PySide est d'utiliser un QWidget.

Toute application PySide ou PyQt doit commencer par la création d'un objet QApplication ; nous créons ensuite la fenêtre de notre application grâce à l'objet QWidget. Par la suite, il est possible de la redimensionner, de lui donner un titre… La commande show() permet de faire apparaître cette fenêtre. La commande sys.exit(app.exec_()) correspond au mainloop de notre application. Cette ligne permettra entre autre de correctement quitter l'application le moment venu.
"""Création de l'objet application nécessaire à notre projet"""
app = QtGui.QApplication(sys.argv)  
 
"""Création de l'objet widget qui sera la fenêtre principale de notre application.
Nous allons aussi la dimensionner tel que l = 300 et h = 200.
Puis nous lui donnons un titre."""
widget = QtGui.QWidget()
widget.resize(300, 200)
widget.setWindowTitle('Application simple')
 
"""Commande nécessaire pour faire apparaitre la fenêtre"""
widget.show()
 
"""Lancement de la boucle principale (mainloop dans d'autre bibliothèque). La méthode sys.exit assurera un arrêt propre de l'application"""
sys.exit(app.exec_())  
Cela dit, cette façon de faire ne sera pas la plus simple à utiliser dans le futur. Python étant un langage orienté objet, il est préférable de rester dans cette logique dès le début. Ainsi, au code ci-dessus, on préfèrera celui-ci :
import sys
from PySide import QtGui
 
"""Création de la classe Frame, héritée de QWidget, puis création des constructeurs respectifs."""
class Frame(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        
        self.resize(600,500) 
        self.setWindowTitle('Application simple')
"""Modification de la font de la fenêtre. Ceci modifiera aussi la font des widget enfants"""
        self.setFont(QtGui.QFont("Verdana", 18, QtGui.QFont.Bold))
        
"""Création d'un QLabel, qui permet d'afficher du texte sur la fenêtre, puis positionnement et dimensionnement de celui-ci"""
        self.label = QtGui.QLabel("Hello World", self)
        self.label.setGeometry(10, 350, 200, 25)
        
 
app = QtGui.QApplication(sys.argv)
frame = Frame()
frame.show()
sys.exit(app.exec_())

Comment afficher une image dans mon interface ?
auteur : Jiyuu
La méthode la plus simple est d'utiliser un QLabel conjointement à un QPixmap.

QPixmap est la classe de Qt qui permet d'afficher une image existante. Une autre classe permet de travailler avec les images, il s'agit de QImage. Cependant, cette dernière est utilisée pour travailler directement sur les pixels et peut aussi être utilisée comme un outil de peinture, même si ce n'est pas son objectif principal. Dans ce cas c'est donc bien QPixmap dont on a besoin.
# -*- coding: iso-8859-1 -*-
 
import sys
from PySide import QtGui, QtCore
 
##Création de la fenêtre principale.
class Frame(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.resize(600,500)
        size_ecran = QtGui.QDesktopWidget().screenGeometry()
        size_fenetre = self.geometry()
 
        label = QtGui.QLabel("", self)
        label.move(100, 100)
        label.setPixmap(QtGui.QPixmap("img.JPG"))
        label.clicked.connect(quit)
 
 
app = QtGui.QApplication(sys.argv)
frame = Frame()
frame.show()
 
sys.exit(app.exec_())

Comment déplacer et/ou redimensionner un widget ?
auteur : Jiyuu
Il existe trois fonctions indispensables pour réaliser ces actions :

  • move(x,y) déplacera le widget associé aux coordonnées (x,y) ;
  • resize(l,h) donnera la taille (l,h) au widget ;
  • setGeometry(x,y,l,h) placera le widget associé aux coordonnées (x,y) et lui donnera la taille (l,h).
import sys
from PySide import QtGui

class Frame(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.resize(600,500) 
        """Permet uniquement de dimensionner la fenêtre selon les paramètres l = 600 et h = 500"""
        self.move(200, 300)
        """Déplace la fenêtre aux coordonnées x = 200 et y = 300"""
        self.btn = QtGui.QPushButton("Hello World", self)
        self.btn.setGeometry(10, 350, 200, 25)
        """Positionne le bouton au point (10,350) et de lui donner la taille (200,25)"""

app = QtGui.QApplication(sys.argv)
frame = Frame()
frame.show()
sys.exit(app.exec_())

Copyright © 2010 developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique PyQt & PySide