IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
FAQ Qt FAQ Qt Creator FAQ PyQt & PySide

La FAQ PyQt & PySide

La FAQ PyQt & PySideConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 38, dernière mise à jour : 29 août 2021 

 
OuvrirSommaireQtGuiDébuter

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.

 
Sélectionnez
"""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 :

 
Sélectionnez
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_())
Créé le 21 janvier 2011  par 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.

 
Sélectionnez
# -*- 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_())
Créé le 21 janvier 2011  par 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).
 
Sélectionnez
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_())
Créé le 21 janvier 2011  par Jiyuu

Copyright © 2010 developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.