-
Notifications
You must be signed in to change notification settings - Fork 0
/
sec-AspectFrames.html
141 lines (141 loc) · 6.97 KB
/
sec-AspectFrames.html
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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>10.6. Les cadres proportionnels (AspectFrame)</title>
<link rel="stylesheet" href="pygtktutfr.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.69.1">
<link rel="start" href="index.html" title="Tutoriel PyGTK 2.0">
<link rel="up" href="ch-ContainerWidgets.html" title="Chapitre 10. Les widgets conteneurs">
<link rel="prev" href="sec-Frames.html" title="10.5. Les cadres (Frame)">
<link rel="next" href="sec-PanedWindowWidgets.html" title="10.7. Fenêtre à volets (Paned Window)">
<meta name="keywords" content="python,pygtk,tutoriel,traduction">
<link rel="home" href="index.html" title="Table des matières">
</head>
<body>
<div class="localisation">
Vous êtes à peu près ici :
<a href="../../index.html">Accueil</a> »
<a href="../pygtktut.php">tutoriel PyGTK</a> »
<a href="index.html">PyGTK : sommaire</a>
</div>
<!-- fin localisation -->
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">10.6. Les cadres proportionnels (AspectFrame)</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="sec-Frames.html">Préc.</a> </td>
<th width="60%" align="center">Chapitre 10. Les widgets conteneurs</th>
<td width="20%" align="right"> <a accesskey="n" href="sec-PanedWindowWidgets.html">Suiv.</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" lang="fr">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="sec-AspectFrames"></a>10.6. Les cadres proportionnels (AspectFrame)</h2></div></div></div>
<p>Le cadre proportionnel est semblable au widget cadre, en outre
il maintient le rapport largeur/hauteur du widget enfant à sa valeur
en ajoutant de l'espace supplémentaire si nécessaire. Ceci est utile si,
par exemple, vous voulez présenter une image plus grande. La taille
de la prévisualisation peut varier lorsque l'utilisateur redimensionne
la fenêtre, mais les proportions de l'image doivent toujours
correspondre à l'image originale.
</p>
<p>Pour créer un cadre proportionnel, on utilise :</p>
<pre class="programlisting">
cadre_prop = gtk.AspectFrame(<strong class="parameter"><code>label</code></strong>=None, <strong class="parameter"><code>xalign</code></strong>=0.5, <strong class="parameter"><code>yalign</code></strong>=0.5, <strong class="parameter"><code>ratio</code></strong>=1.0, <strong class="parameter"><code>obey_child</code></strong>=TRUE)
</pre>
<p>... où l'étiquette <em class="parameter"><code>label</code></em> indique le
texte qui sera affiché, les paramètres <em class="parameter"><code>xalign</code></em>et
<em class="parameter"><code>yalign</code></em> indiquent l'alignement comme décrit dans
<a href="http://www.pygtk.org/pygtk2reference/class-gtkalignment.html" target="_top">
<code class="classname">gtk.Alignment</code></a>. Si le paramètre
<em class="parameter"><code>obey_child</code></em> vaut <code class="literal">TRUE</code>,
les proportions du widget enfant correspondront à la taille idéale qu'il demande,
autrement elles seront données par la valeur de <em class="parameter"><code>ratio</code></em>.
</p>
<p>Pour modifier les arguments d'un cadre proportionnel existant,
on utilise :</p>
<pre class="programlisting">
cadre_prop.set(<strong class="parameter"><code>xalign</code></strong>=0.0, <strong class="parameter"><code>yalign</code></strong>=0.0, <strong class="parameter"><code>ratio</code></strong>=1.0, <strong class="parameter"><code>obey_child</code></strong>=TRUE)
</pre>
<p>En exemple, le programme <a href="exemples/aspectframe.py" target="_top">
<span><strong class="command">aspectframe.py</strong></span></a> utilise un cadre proportionnel
<code class="classname">AspectFrame</code> pour offrir une zone de dessin
dont le rapport de proportions sera toujours de 2/1, quel que
soit la manière dont l'utilisateur redimensionne la fenêtre.
La <a href="sec-AspectFrames.html#aspectframefig" title="Figure 10.5. Exemple de cadre proportionnel">Figure 10.5, « Exemple de cadre proportionnel »</a> montre l'affichage du
programme.</p>
<div class="figure">
<a name="aspectframefig"></a><p class="title"><b>Figure 10.5. Exemple de cadre proportionnel</b></p>
<div class="mediaobject" align="center"><img src="figures/aspectframe.png" align="middle" alt="Exemple de cadre proportionnel"></div>
<span>Exemple de cadre proportionnel</span>
</div>
<p>Voici le code du programme <a href="exemples/aspectframe.py" target="_top">
<span><strong class="command">aspectframe.py</strong></span></a> :</p>
<pre class="programlisting">
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # exemple aspectframe.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 class ExempleAspectFrame:
10 def __init__(self):
11 fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL);
12 fenetre.set_title("Cadre_proportionnel")
13 fenetre.connect("destroy", lambda x: gtk.main_quit())
14 fenetre.set_border_width(10)
15
16 # Créer un cadre proportionnel - l'ajouter à la fenêtre principale
17 cadre_prop = gtk.AspectFrame("2x1", # étiquette
18 0.5, # x centré dans la fenêtre à
19 0.5, # y centré dans la fenêtre à
20 2, # rapport x/y = 2
21 False) # ignorer taille des widgets enfant
22 fenetre.add(cadre_prop)
23 cadre_prop.show()
24
25 # Ajouter un widget enfant dans le cadre proportionnel
26 zone_dessin = gtk.DrawingArea()
27
28 # Déclarer une fenêtre de 200x200 mais le cadre proportionnel
29 # avec un rapport de 2x1 affiche une zone de 200x100
30 zone_dessin.set_size_request(200, 200)
31 cadre_prop.add(zone_dessin)
32 zone_dessin.show()
33 fenetre.show()
34
35 def main():
36 gtk.main()
37 return 0
38
39 if __name__ == "__main__":
40 ExempleAspectFrame()
41 main()
</pre>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="sec-Frames.html">Préc.</a> </td>
<td width="20%" align="center"><a accesskey="u" href="ch-ContainerWidgets.html">Chapitre parent</a></td>
<td width="40%" align="right"> <a accesskey="n" href="sec-PanedWindowWidgets.html">Suiv.</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">10.5. Les cadres (Frame) </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td>
<td width="40%" align="right" valign="top"> 10.7. Fenêtre à volets (Paned Window)</td>
</tr>
</table>
</div>
</body>
</html>