Par exemple, la première fenètre présentée ci-dessous peut fort bien se coder dans un shell Python interactif de la manière suivante :



Documents pareils
Modifier les propriétés d'un widget

Modéliser ses fenêtres avec Qt Designer

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

L'architecture MVC avec les widgets complexes

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

L informatique en BCPST

Tutoriel : Comment installer une compte (une adresse ) sur un logiciel de messagerie (ou client messagerie)?

I Pourquoi une messagerie?

Ateliers Python+Qt : Premiers pas : S'installer pour PyQt... en quelques minutes sous Windows!

Le poste de travail, les dossiers et les fichiers

Java 7 Les fondamentaux du langage Java

DOCUMENTATION VISUALISATION UNIT

Classer et partager ses photographies numériques

Créer des étiquettes avec les adresses d'un tableau Calc

Créer son blog pas à pas

YAPBA M. Logiciel libre de suivi de vos comptes

Navigation dans Windows

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

FICHE 17 : CREER UN SITE WEB

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

À propos de Kobo Desktop Télécharger et installer Kobo Desktop... 6

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

À propos de votre liseuse... 5

Tutorial et Guide TeamViewer

RECUPEREZ DES FICHIERS SUPPRIMES AVEC RECUVA

Le générateur d'activités

Écrit par Riphur Riphur.net

Documentation Liste des changements apportés

Créer un rapport pour Reporting Services

10. Envoyer, recevoir des mails

NOOBÉ GUIDE DE PRISE EN MAIN SOMMAIRE. INSTALLER Installer le logiciel Lancer le logiciel Découvrir NOOBÉ

Installation et utilisation du client FirstClass 11

Comment bien démarrer avec. NetAirClub GUIDE ADMINISTRATEUR V1.5. Table des matières

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Système Normalisé de Gestion des Bibliothèques -SYNGEB : version Réseau-

1 TD 2 : Construction d'une chier Acrobat et envoi par

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

1/6. L icône Ordinateur

Prise en main du logiciel Smart BOARD

PRESENTATION / FORMATION

Présentation du langage et premières fonctions

Manuel d installation pour L ARENAC

Affichage de la date d'exigibilité sur les documents FAQ INV 011

Création d'une interface graphique

Le modèle de données

COURS WINDEV NUMERO 3

Les conseils et les procédures pour utiliser divers programmes francophones avec de l'hébreu

Installer Joomla Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Alcatel OmniPCX Office

guide d utilisation de showtime

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

Mon-Expert-en-Gestion est un portail collaboratif 100% Web, constitué de plusieurs modules utiles pour la gestion en ligne de votre entreprise.

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Réseau local entre Windows Xp et 7

Conditions d'utilisation de la version gratuite

Portail du Consommateur. Guide d utilisation. Du dépôt de requêtes

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

SAUVEGARDER SES DONNEES PERSONNELLES

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

SOMMAIRE 1 INTRODUCTION 3 2 CONTACTER VOTRE SUPPORT 3 3 ESPACE DE GESTION DES CARTES 4 4 CONFIGURER UNE CARTE 5

Présentation du logiciel Cobian Backup

Création de Site Web. Atelier Cyber-Base Emploi Pays Beaujolais

Service client LSC 1

Les méthodes utilisées pour compresser, puis décompresser un fichier pour en faire une archive, pour les débutants.

Styler un document sous OpenOffice 4.0

Application de lecture de carte SESAM-Vitale Jeebop

Sauvegarde des bases SQL Express

Le service de création de site Internet : Mode d emploi. La Création de Site Internet

Dans la série Les tutoriels libres présentés par le site FRAMASOFT. <Handbrake> <Utilisation d'handbrake pour les débutants> Par <OLIVIER LECLERCQ>

Version 7.1_5.1. Release Notes

Gestion des bases SQL Server Microsoft Guide pratique

Assistance à distance sous Windows

Trier les ventes (sales order) avec Vtiger CRM

Comment faire des étiquettes

OneDrive, le cloud de Microsoft

Protéger une machine réelle derrière une machine virtuelle avec pfsense

IBM Unica emessage Version Date de publication : 7 juin Guide utilisateur

Modem LG LDU-1900D. Guide d utilisateur. LG Electronics

MO-Call pour les Ordinateurs. Guide de l utilisateur

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

Le service d'agenda en ligne SOGo

MIGRER VERS LA DERNIERE VERSION DE L'ANTIVIRUS FIREWALL

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Alfresco Guide Utilisateur

Gestion des utilisateurs : Active Directory

FACTURATION. Menu. Fonctionnement. Allez dans le menu «Gestion» puis «Facturation» 1 Descriptif du dossier (onglet Facturation)

Organiser le menu "Démarrer"

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

LES ACCES ODBC AVEC LE SYSTEME SAS

Le meilleur de l'open source dans votre cyber cafe

Installation et prise en main

Rapport d'essais d'autorun dans CD/DVD et dans clé USB

Niveau 1. Atelier d'initiation à l'ordinateur ... Fondation de la Bibliothèque Memphrémagog inc. Magog (Québec) J1X 2E7 Tél.

À propos de votre liseuse... 4

Transcription:

Dans ce chapitre, nous réaliserons notre premier programme utilisant PyQt, et nous verrons comment ouvrir notre première fenêtre! Les lignes de codes sont présentées sous forme de scripts python, mais il est possible, voir souhaitable de les adapter pour les exécuter sous forme interactive dans un shell python. Par exemple, la première fenètre présentée ci-dessous peut fort bien se coder dans un shell Python interactif de la manière suivante : >>> from PyQt4.QtGui import QApplication >>> a=qapplication([]) >>> a.exec_() Le problème est que cette suite d'instructions gèle le prompt, Python n'est plus accessible. Un Ctrl+Z vous sortira de ce mauvais pas. Le processus Python n'est pas tué, il est simplement inactif et inaccessible, il vous faut le tuer à la main : $ ps u pierre... 8182? 00:00:21 soffice.bin 10070 pts/0 00:00:00 python 12004 pts/1 00:00:00 bash 12075 pts/1 00:00:00 ps $ kill 9 10070 Une autre solution, plus propre, est de lancer le shell Python de la manière suivante : $ ipython q4thread In [1]: from PyQt4.QtGui import QApplication In [2]: a=qapplication([]) In [3]: a.exec_() In [4]: #vous avez la main!

Codons notre première fenêtre ouvrez votre IDE favori, par exemple kate ou gedit, emacs, gvim, et créez un nouveau fichier main.py (sans espace dans le nom du fichier, c'est important) Le code minimal d'un projet PyQt Votre projet est constitué normalement au départ d'un seul fichier : main.py avec le code : 1 #! /usr/bin/python 3 from PyQt4.QtGui import * 4 import os,sys 5 6 def main(args): 7 a=qapplication(args) 8 r=a.exec_() 9 return r 10 11 if name ==" main ": 12 main(sys.argv) C'est le code minimal d'une application utilisant PyQt. Comme vous pouvez le constater, ce qui est génial c'est que c'est vraiment très court D'autres bibliothèques vous demandent beaucoup plus de lignes de code avant de pouvoir commencer à programmer, tandis qu'avec PyQt c'est vraiment très simple et rapide.

Analysons ce code pas à pas! 1. On indique au shell où se trouve l'exécutable en charge de faire tourner le script (On aura rendu main.py exécutable par la commande chmod +x main.py.) 2. Cette importation permet d'accéder à la classe QApplication, qui est la classe de base de tout programme PyQt, ainsi qu'aux widget et autres éléments graphiques. 3. Pour accéder aux arguments 4. 5. Le programme principal sous forme de fonction. 6. QApplication, est la classe de base. La première ligne de la fonction main crée un nouvel objet de type QApplication. Cet objet est appelé a (mais vous pouvez l'appeler comme vous voulez). Le constructeur de QApplication exige que vous lui passiez les arguments du programme, c'est-à-dire les paramètres args que reçoit la fonction main. Cela permet de démarrer le programme avec certaines options précises, mais on ne s'en servira pas ici. 7. Lancement de l'application par appel à la méthode exec_ de notre objet a. Cette méthode démarre notre programme. Si vous ne le faites pas il ne se passera rien. 8. retourne le résultat de app.exec() pour dire si le programme s'est bien déroulé ou pas. 9. 10. Deux cas : Si le fichier est lancé comme un script python, par une des deux commandes $ python main.py ou bien (si le script est exécutable) $ main.py alors la variable globale name prend la valeur " main " et la fonction main est lancée. Si le fichier est utilisé comme module dans un programme (ou en ligne de commande) python par >>>import main alors la fonction main.main() devient disponible pour la suite. Ce que vous devez vous dire, c'est qu'en gros tout notre programme s'exécute à partir de ce moment-là. La méthode exec_ est gérée par PyQt : tant qu'elle s'exécute, notre programme est ouvert. Dès que la méthode exec_ est terminée, notre programme s'arrête.

Affichage d'un widget Dans la plupart des bibliothèques GUI, dont PyQt fait partie, tous les éléments d'une fenêtre sont appelés des widgets. Les boutons, les cases à cocher, les images... tout ça ce sont des widgets. La fenêtre elle-même est considérée comme un widget. Pour provoquer l'affichage d'une fenêtre, il suffit de demander à afficher n'importe quel widget. Ici par exemple, nous allons afficher un bouton. Voici le code complet que j'aimerais que vous utilisiez. Il utilise le code de base de tout à l'heure mais y ajoute quelques lignes : #! /usr/bin/python # * coding: utf 8 * from PyQt4.QtGui import * import os,sys def main(args): a=qapplication(args) bouton=qpushbutton(a.trutf8("salut les Zéros, la forme?"),none) bouton.show() r=a.exec_() return r if name ==" main ": main(sys.argv) Les lignes ajoutées ont été surlignées pour bien que vous puissiez les repérer. On voit entre autres : # * coding: utf 8 *

Cette ligne indique à python que le codage des caractères est en utf 8. A défaut l'interpréteur refusera d'exécuter un script python contenant des accents (même en commentaires) bouton=qpushbutton(a.trutf8("salut les Zéros, la forme?"),none) Cela crée un nouvel objet de type QPushButton que nous appelons tout simplement bouton, mais on aurait très bien pu l'appeler autrement. Le constructeur attend un paramètre : le texte qui sera affiché sur le bouton. (vous noterez que sous PyQt toutes les classes commencent par un "Q" d'ailleurs!). Afin d'afficher correctement le texte avec des accents, on demande à la méthode trutf8 de la Qapplication a de traduire correctement la chaîne de caractères passée en paramètre. Malheureusement, le fait de créer un bouton ne suffit pas pour qu'il soit affiché. Il faut appeler sa méthode show : bouton.show() Et voilà! Cette ligne commande l'affichage d'un bouton. Comme un bouton ne peut pas "flotter" comme ça sur votre écran, PyQt l'insère automatiquement dans une fenêtre. On a en quelque sorte créé une "fenêtre-bouton" Bien entendu, dans un vrai programme plus complexe, on crée d'abord une fenêtre et on y insère ensuite plusieurs widgets, mais là on commence simplement Notre code est prêt, il ne reste plus qu'à exécuter le programme! Vous l'avez vu, le code nécessaire pour ouvrir une fenêtre toute simple constituée d'un bouton est ridicule. Quelques lignes à peine, et rien de bien compliqué à comprendre au final. C'est ce qui fait la force de PyQt : "un code simple est un beau code" dit-on. PyQt s'efforce de respecter ce dicton à la lettre, vous vous

en rendrez compte dans les prochains chapitres. Dans les prochains chapitres, nous allons voir comment changer l'apparence du bouton, comment faire une fenêtre un peu plus complexe. Nous découvrirons aussi le mécanisme des signaux et des slots, un des principes les plus importants de PyQt qui permet de gérer les évènements : un clic sur un bouton pourra par exemple provoquer l'ouverture d'une nouvelle fenêtre ou sa fermeture!