index.html 17.6 KB
   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
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="last-modified" content="2016-11-02 22:36:13 +0100">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="search-domain" value="">
<link rel="stylesheet" type="text/css" href="../assets/css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="../assets/css/bootstrap-theme.css" />
<link rel="stylesheet" type="text/css" href="../assets/css/lesson.css" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon-UJM.ico" />
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<title>Programmer en Python: Référence qtido</title>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>

<a href=".." class="pull-left">
<img class="navbar-logo" src="../assets/img/UJM-logo.svg" alt="UJM logo" />
</a>

<a class="navbar-brand" href="../">Accueil</a>

</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">


<li><a href="../reference/">Réference</a></li>

<li class="dropdown">
<a href="../" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Épisodes <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="../01-introduction/">Introduction</a></li>
<li><a href="../02-terminal-et-bash/">Le Terminal et Bash</a></li>
<li><a href="../03-bash-et-chemins/">Arborescences de Fichier et Bash</a></li>
<li><a href="../04-python-intro/">Un Premier Programme</a></li>
<li><a href="../05-operations-arith/">Opérations sur des Nombres</a></li>
<li><a href="../06-variables-et-types/">Variables et Types</a></li>
<li><a href="../07-erreurs/">Apprendre par l'Erreur</a></li>
<li><a href="../08-fonction-et-aide/">Fonctions Prédéfinies et Aide</a></li>
<li><a href="../09-import-biblio/">Bibliothèques et Importation de Fonctions</a></li>
<li><a href="../10-biblio-qtido/">Bibliothèque Graphique qtido</a></li>
<li><a href="../11-input-conversion/">Entrées Utilisateur</a></li>
<li><a href="../12-condition-if/">Instructions Conditionnelles</a></li>
<li><a href="../13-conditions-else/">Instructions Conditionnelles (2)</a></li>
<li><a href="../14-boucle-while/">Boucles while (tant que)</a></li>
<li><a href="../15-listes-base/">Listes de Valeurs</a></li>
<li><a href="../16-listes-plus/">Listes de Valeurs (2)</a></li>
<li><a href="../17-boucle-for/">Boucles for</a></li>
<li><a href="../18-def-fonctions/">Définitions de fonctions</a></li>
</ul>
</li>

<li><a href="../installation/">Installation</a></li>

<li class="dropdown">
<a href="../" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Extras <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="../about/">About</a></li>
<li><a href="../more-bashtips/">Astuces Bash</a></li>
<li><a href="../reference-qtido/">Référence qtido</a></li>
</ul>
</li>

<li><a href="../license/">Licence</a></li>
</ul>
<form class="navbar-form navbar-right" role="search" id="search" onsubmit="google_search(); return false;">
<div class="form-group">
<input type="text" id="google-search" placeholder="Search...">
</div>
</form>
</div>
</div>
</nav>

<h1 class="maintitle"><a href="../">Programmer en Python</a>: Référence qtido</h1>

<h2 id="synthse-de-la-bibliothque-qtido">Synthèse de la bibliothèque <code class="highlighter-rouge">qtido</code></h2>

<p>Après avoir importé la bibliothèque <code class="highlighter-rouge">qtido</code> avec :</p>

<div class="source highlighter-rouge"><pre class="highlight"><code>from qtido import *
</code></pre>
</div>

<p>Il est possible de créer une fenêtre avec la fonction <code class="highlighter-rouge">creer(w, h)</code>, par exemple :</p>

<div class="source highlighter-rouge"><pre class="highlight"><code>f = creer(700, 500)
</code></pre>
</div>

<p>En supposant que <code class="highlighter-rouge">f</code> est une fenêtre graphique (retournée par la fonction <code class="highlighter-rouge">creer(…)</code>), la bibliothèque <code class="highlighter-rouge">qtido</code> fourni de nombreuses fonctions.
Le premier paramètre est toujours la fenêtre concernée par l’opération.
La bibliothèque accepte la plupart du temps des valeurs de coordonnées non entières (par exemple 10.5).</p>

<h3 id="fonctions-relatives--la-tortue">Fonctions relatives à la tortue</h3>

<ul>
<li><code class="highlighter-rouge">creer_tortue(f)</code> : Crée une tortue pour tracer dans la fenêtre <code class="highlighter-rouge">f</code>. Renvoie la tortue créée.</li>
<li><code class="highlighter-rouge">tortue_avance(t, d)</code> : Ordonne à la tortue d’avancer de <code class="highlighter-rouge">d</code> pixels.</li>
<li><code class="highlighter-rouge">tortue_droite(t, da)</code> : Ordonne à la tortue de tourner vers la droite d’un angle de <code class="highlighter-rouge">da</code> degrés.</li>
<li><code class="highlighter-rouge">tortue_gauche(t, da)</code> : Ordonne à la tortue de tourner vers la gauche d’un angle de <code class="highlighter-rouge">da</code> degrés.</li>
<li><code class="highlighter-rouge">tortue_stop(t)</code> : Ordonne à la tortue de lever le stylo (d’arrêter de tracer).</li>
<li><code class="highlighter-rouge">tortue_trace(t)</code> : Ordonne à la tortue d’abaisser le stylo (de recommencer à tracer).</li>
</ul>

<h3 id="fonctions-daffichage-simple">Fonctions d’affichage simple</h3>

<p>Les premières fonctions utiles pour générer un dessin avec des lignes et le sauvegarder.</p>

<ul>
<li><code class="highlighter-rouge">effacer(f)</code> : Repeindre en noir toute la fenêtre.</li>
<li><code class="highlighter-rouge">couleur(f, r, g, b)</code> : Définir la couleur des tracés à partir de ce moment. <code class="highlighter-rouge">r</code>, <code class="highlighter-rouge">g</code>, <code class="highlighter-rouge">b</code> sont les quantités de rouge, vert et bleu, comprises entre 0 et 1.
Par exemple, le noir est 0,0,0 (absence de chacune des couleurs), le blanc est 1,1,1 (quantité maximale des trois couleurs), le jaune est 1,1,0 (mélange rouge+vert, sans bleu), 1,0.5,0 est un orange (entre jaune et rouge)…</li>
<li><code class="highlighter-rouge">ligne(f, x1, y1, x2, y2)</code> : Trace un segment de (x1,y1) à (x2,y2).</li>
<li><code class="highlighter-rouge">exporter_image(f, nom_fichier)</code> : Sauvegarder la fenêtre sous forme d’un fichier image (par exemple ‘toto.png’).</li>
</ul>

<p>Et d’autres fonctions d’affichage.</p>

<ul>
<li><code class="highlighter-rouge">rectangle(f, x1, y1, x2, y2)</code> : Trace un rectangle dont un coin a pour coordonnées (x1,y1) et l’autre (x2,y2). Le second coin est exclu du tracé.</li>
<li><code class="highlighter-rouge">cadre(f, x1, y1, x2, y2)</code> : Comme <code class="highlighter-rouge">rectangle</code> mais trace uniquement le contour.</li>
<li><code class="highlighter-rouge">disque(f, cx, cy, r)</code> : Rempli un disque centré en (cx,cy) et de rayon <code class="highlighter-rouge">r</code>.</li>
<li><code class="highlighter-rouge">cercle(f, cx, cy, r)</code> : Comme <code class="highlighter-rouge">disque</code> mais trace uniquement le contour.</li>
<li><code class="highlighter-rouge">texte(f, g, b, taille, texte)</code> : Affiche la chaîne <code class="highlighter-rouge">texte</code> avec une taille de caractères de <code class="highlighter-rouge">taille</code> et avec le coin inférieur gauche de coordonnées (g, b).</li>
<li><code class="highlighter-rouge">texte_centre(f, cx, b, taille, texte)</code> : Comme <code class="highlighter-rouge">texte</code> mais le texte est centré horizontalement autour du point (cx, b).</li>
<li><code class="highlighter-rouge">epaisseur_du_trait(f, w)</code> : Définir l’épaisseur du stylo utilisé pour tracer les contours (cadre, cercle, ligne, etc.). L’épaisseur <code class="highlighter-rouge">w</code> est exprimée en nombre de pixels.</li>
</ul>

<p>Et encore d’autres fonctions plus avancées.</p>

<ul>
<li><code class="highlighter-rouge">polygone(f, liste_points)</code> :</li>
<li><code class="highlighter-rouge">polyligne(f, liste_points)</code> :</li>
<li><code class="highlighter-rouge">utiliser_transformation(f, tx, ty, sx=1, sy=1, r=0)</code> : Change la transformation utilisée pour le tracer. Tout les tracés auront une translation de (<code class="highlighter-rouge">tx</code>,<code class="highlighter-rouge">ty</code>), un étirement horizontal de <code class="highlighter-rouge">sx</code> et vertical de <code class="highlighter-rouge">sy</code>, et enfin une rotation de <code class="highlighter-rouge">r</code> degrés.</li>
<li><code class="highlighter-rouge">annuler_transformation(f)</code> : Remet la transformation à sa valeur par défaut. Cette fonction est aussi automatiquement appelée par <code class="highlighter-rouge">effacer(…)</code>.</li>
</ul>

<h3 id="fonctions-pour-lanimation-et-la-gestion-de-la-fentre">Fonctions pour l’animation et la gestion de la fenêtre</h3>

<ul>
<li><code class="highlighter-rouge">est_fermee(f)</code> : Renvoie un booléen valant <code class="highlighter-rouge">True</code> si la fenêtre a déjà été fermée par l’utilisateur.</li>
<li><code class="highlighter-rouge">attendre_fermeture(f)</code> : Bloque et attend que l’utilisateur ferme la fenêtre.</li>
<li><code class="highlighter-rouge">attendre_pendant(f, ms)</code> : Bloque et attend pendant <code class="highlighter-rouge">ms</code> millisecondes.</li>
<li><code class="highlighter-rouge">re_afficher(f)</code> : Force le réaffichage (peut être utile avec des animations qui n’utilisent jamais <code class="highlighter-rouge">attendre_pendant</code> ou <code class="highlighter-rouge">attendre_evenement</code>).</li>
<li><code class="highlighter-rouge">reinitialiser_attendre_evenement(f, trigger=False)</code> :</li>
</ul>

<h3 id="fonctions-pour-la-gestion-dvnements-clavier-et-souris">Fonctions pour la gestion d’événements clavier et souris</h3>

<ul>
<li><code class="highlighter-rouge">attendre_evenement(f, ms)</code> : Comme <code class="highlighter-rouge">attendre_pendant</code> mais se débloque aussi si un événement (clavier, bouton, …) se produit.
Dans le cas où il s’est produit un événement, la fonction <code class="highlighter-rouge">dernier_evenement</code> permet de le récupérer.
Dans le cas où les <code class="highlighter-rouge">ms</code> millesecondes se sont écoulées, <code class="highlighter-rouge">dernier_evenement</code> renverra la valeur <code class="highlighter-rouge">None</code>.</li>
<li><code class="highlighter-rouge">dernier_evenement(f)</code> : Renvoi un identifiant du dernier événement s’étant produit (au dernier appel de <code class="highlighter-rouge">attendre_evenement</code>) ou <code class="highlighter-rouge">None</code> si aucun événement ne s’est produit.</li>
<li><code class="highlighter-rouge">les_touches_appuyees(f)</code> : Renvoi une liste des touches du clavier qui sont actuellement appuyées.</li>
</ul>

<h3 id="fonctions-pour-lutilisation-de-boutons-etc">Fonctions pour l’utilisation de boutons, etc</h3>

<p>Les « widgets » (boutons, champ textes, etc.), une fois ajoutés à une fenêtre, s’affiche automatiquement.
Il faut donc ajouter un widget juste après avoir créer la fenêtre et non pas à chaque fois que l’on ré-affiche son contenu.
Les fonctions d’ajout prennent des coordonnées (x1, y1, x2, y2) qui correspondent au rectangle que doit occuper le widget.</p>

<ul>
<li><code class="highlighter-rouge">ajouter_bouton(f, ev, x1, y1, x2, y2, texte)</code> : Crée un bouton avec <code class="highlighter-rouge">texte</code> marqué dessus. Quand ce bouton est clické, l’événement <code class="highlighter-rouge">ev</code> sera émis.</li>
<li><code class="highlighter-rouge">ajouter_slider(f, ev , x1, y1, x2, y2, v_min, v_max)</code> : Ajoute durablement . <code class="highlighter-rouge">v_min</code> et <code class="highlighter-rouge">v_max</code> sont inclus, il y a donc <code class="highlighter-rouge">v_max - v_min + 1</code> valeurs possibles.</li>
<li><code class="highlighter-rouge">ajouter_champ_texte(f, ev , x1, y1, x2, y2)</code> : Crée un bouton avec <code class="highlighter-rouge">texte</code> marqué dessus. Quand le texte change, l’événement <code class="highlighter-rouge">ev</code> sera émis.</li>
<li><code class="highlighter-rouge">ajouter_zone_texte(f, ev , x1, y1, x2, y2)</code> : Comme le champ texte mais crée une zone où il est possible de taper plusieurs lignes.</li>
<li><code class="highlighter-rouge">supprime_widgets(f)</code> : Supprime tous les widgets de la fenêtre.</li>
</ul>

<p>Quand un widget contient une valeur (tous sauf les boutons), il est possible d’accéder à la valeur ou de la modifier, en utilisant le nom de l’événement donner lors de la création du widget.</p>

<ul>
<li><code class="highlighter-rouge">lire_slider(f, ev)</code> : Renvoie la valeur, sous forme d’un entier, du slider associé à l’événement <code class="highlighter-rouge">ev</code>.</li>
<li><code class="highlighter-rouge">lire_champ_texte(f, ev)</code> : Renvoie la valeur, sous forme d’une chaîne de caractères, du champ texte associé à l’événement <code class="highlighter-rouge">ev</code>.</li>
<li><code class="highlighter-rouge">lire_zone_texte(f, ev)</code> : Renvoie la valeur, sous forme d’une chaîne de caractères, de la zone de texte associée à l’événement <code class="highlighter-rouge">ev</code>.</li>
<li><code class="highlighter-rouge">changer_slider(f, ev, value)</code> : Change la valeur du slider associé à l’événement <code class="highlighter-rouge">ev</code>. Le paramètre <code class="highlighter-rouge">val</code> doit être un entier.</li>
<li><code class="highlighter-rouge">changer_champ_texte(f, ev, val)</code> : Change le contenu du champ texte associé à l’événement <code class="highlighter-rouge">ev</code>. Le paramètre <code class="highlighter-rouge">val</code> doit être une chaîne de caractères.</li>
<li><code class="highlighter-rouge">changer_zone_texte(f, ev, val)</code> : Change le contenu de la zone de texte associée à l’événement <code class="highlighter-rouge">ev</code>. Le paramètre <code class="highlighter-rouge">val</code> doit être une chaîne de caractères.</li>
</ul>



<hr/>
<footer>
<div class="row">
<div class="col-md-6" align="left">
<h4>
Copyright &copy; 2016
</h4>
</div>
<div class="col-md-6" align="right">
<h4>
<!--
<a href="/">Source</a>
/
<a href="/blob/gh-pages/CONTRIBUTING.md">Contributing</a>
/
-->
<a href="mailto:remi.emonet@INVERSE-fr.univ-st-etienne">Contact</a>
</h4>
</div>
</div>
</footer>

</div>
<script src="../assets/js/jquery.min.js"></script>
<script src="../assets/js/bootstrap.min.js"></script>
<script src="../assets/js/lesson.js"></script>

<!-- clicky Cla -->
<script type="text/javascript">
var clicky_site_ids = clicky_site_ids || [];
clicky_site_ids.push(100779706);
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = '//static.getclicky.com/js';
( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
})();
</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/100779706ns.gif" /></p></noscript>


<!-- Histats.com START (aync)-->
<script type="text/javascript">var _Hasync= _Hasync|| [];
_Hasync.push(['Histats.start', '1,2767123,4,0,0,0,00010000']);
_Hasync.push(['Histats.fasi', '1']);
_Hasync.push(['Histats.track_hits', '']);
(function() {
var hs = document.createElement('script'); hs.type = 'text/javascript'; hs.async = true;
hs.src = ('http://s10.histats.com/js15_as.js');
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(hs);
})();</script>
<noscript><a href="http://www.histats.com" target="_blank"><img src="http://sstatic1.histats.com/0.gif?2767123&101" alt="javascript hit counter" border="0"></a></noscript>
<!-- Histats.com END -->
</body>
</html>