« Python : Tkinter » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 8 : Ligne 8 :
Je ne l'ai mis ici que pour référence rapide
Je ne l'ai mis ici que pour référence rapide


 Python 2, python 3
 
 
== Python 2, python 3 ==


Les modules ne sont pas les mêmes suivant votre version de python. Si le message suivant apparaît lors de l'exécution de votre script:
Les modules ne sont pas les mêmes suivant votre version de python. Si le message suivant apparaît lors de l'exécution de votre script:
 
<pre>ImportError: No module named 'Tkinter'
ImportError: No module named 'Tkinter'
</pre>


C'est que le module appelé n'est pas le bon par rapport à votre version python.
C'est que le module appelé n'est pas le bon par rapport à votre version python.
<pre>'''Python 2'''            '''Python 3'''
Tkinter        →  tkinter
Tix            →  tkinter.tix
ttk            →  tkinter.ttk
tkMessageBox    →  tkinter.messagebox
tkColorChooser  →  tkinter.colorchooser
tkFileDialog    →  tkinter.filedialog
tkCommonDialog  →  tkinter.commondialog
tkSimpleDialog  →  tkinter.simpledialog
tkFont          →  tkinter.font
Tkdnd          →  tkinter.dnd
ScrolledText    →  tkinter.scrolledtext
</pre>


Python 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Python 3<br/> Tkinter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; →&nbsp; tkinter<br/> Tix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; →&nbsp; tkinter.tix<br/> ttk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; →&nbsp; tkinter.ttk<br/> tkMessageBox&nbsp;&nbsp;&nbsp; →&nbsp; tkinter.messagebox<br/> tkColorChooser&nbsp; →&nbsp; tkinter.colorchooser<br/> tkFileDialog&nbsp;&nbsp;&nbsp; →&nbsp; tkinter.filedialog<br/> tkCommonDialog&nbsp; →&nbsp; tkinter.commondialog<br/> tkSimpleDialog&nbsp; →&nbsp; tkinter.simpledialog<br/> tkFont&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; →&nbsp; tkinter.font<br/> Tkdnd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; →&nbsp; tkinter.dnd<br/> ScrolledText&nbsp;&nbsp;&nbsp; →&nbsp; tkinter.scrolledtext
== Hello world ==


Hello world
Voici le code de votre premier '''hello world'''
<pre><span class="c1"># -*- coding: utf-8 -*-</span>
<span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="o">*</span>


Voici le code de votre premier hello world
<span class="n">fenetre</span> <span class="o">=</span> <span class="n">Tk</span><span class="p">()</span>


# -*- coding: utf-8 -*-<br/> &nbsp;<br/> from tkinter import *
<span class="n">label</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Hello World"</span><span class="p">)</span>
<span class="n">label</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>


fenetre = Tk()
<span class="n">fenetre</span><span class="o">.</span><span class="n">mainloop</span><span class="p">()</span>
</pre>


label = Label(fenetre, text="Hello World")<br/> label.pack()
Une fenêtre comme celle-ci devrait apparaître:


fenetre.mainloop()
http://apprendre-python.com/images/hello-world.png


Une fenêtre comme celle-ci devrait apparaître:
== Les widget Tkinter ==


Les widget Tkinter
Pour créer un logiciel graphique vous devez ajouter dans une fenêtre des éléments graphiques que l'on nomme widget. Ce widget peut être tout aussi bien une liste déroulante que du texte.


Pour créer un logiciel graphique vous devez ajouter dans une fenêtre des éléments graphiques que l'on nomme widget. Ce widget peut être tout aussi bien une liste déroulante que du texte.<br/> Les boutons
== Les boutons ==


Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci-dessous, on lui propose de fermer la fenêtre.
Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci-dessous, on lui propose de fermer la fenêtre.
<pre><span class="c1"># bouton de sortie</span>
<span class="n">bouton</span><span class="o">=</span><span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Fermer"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">fenetre</span><span class="o">.</span><span class="n">quit</span><span class="p">)</span>
<span class="n">bouton</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


# bouton de sortie<br/> bouton=Button(fenetre, text="Fermer", command=fenetre.quit)<br/> bouton.pack()
http://apprendre-python.com/images/tkinter-button.png


Les labels
== Les labels ==


Les labels sont des espaces prévus pour écrire du texte. Les labels servent souvent à décrire un widget comme un input
Les labels sont des espaces prévus pour écrire du texte. Les labels servent souvent à décrire un widget comme un input
<pre><span class="c1"># label</span>
<span class="n">label</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Texte par défaut"</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"yellow"</span><span class="p">)</span>
<span class="n">label</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


# label<br/> label = Label(fenetre, text="Texte par défaut", bg="yellow")<br/> label.pack()
http://apprendre-python.com/images/tkinter-label.png


Entrée / input
== Entrée / input ==
<pre><span class="c1"># entrée</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">StringVar</span><span class="p">()</span>
<span class="n">value</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"texte par défaut"</span><span class="p">)</span>
<span class="n">entree</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">string</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
<span class="n">entree</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


# entrée<br/> value = StringVar()<br/> value.set("texte par défaut")<br/> entree = Entry(fenetre, textvariable=string, width=30)<br/> entree.pack()
http://apprendre-python.com/images/tkinter-input.png


Case à cocher
== Case à cocher ==


Les checkbox proposent à l'utilisateur de cocher une option.
Les checkbox proposent à l'utilisateur de cocher une option.
<pre><span class="c1"># checkbutton</span>
<span class="n">bouton</span> <span class="o">=</span> <span class="n">Checkbutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Nouveau?"</span><span class="p">)</span>
<span class="n">bouton</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


# checkbutton<br/> bouton = Checkbutton(fenetre, text="Nouveau?")<br/> bouton.pack()
http://apprendre-python.com/images/tkinter-checkbox.png


Boutons radio
== Boutons radio ==


Les boutons radio sont des cases à cocher qui sont dans un groupe et dans ce groupe seul un élément peut être sélectionné.
Les boutons radio sont des cases à cocher qui sont dans un groupe et dans ce groupe seul un élément peut être sélectionné.
<pre><span class="c1"># radiobutton</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">StringVar</span><span class="p">()</span>
<span class="n">bouton1</span> <span class="o">=</span> <span class="n">Radiobutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Oui"</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">bouton2</span> <span class="o">=</span> <span class="n">Radiobutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Non"</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">bouton3</span> <span class="o">=</span> <span class="n">Radiobutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Peu être"</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
<span class="n">bouton1</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">bouton2</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">bouton3</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


# radiobutton<br/> value = StringVar()<br/> bouton1 = Radiobutton(fenetre, text="Oui", variable=value, value=1)<br/> bouton2 = Radiobutton(fenetre, text="Non", variable=value, value=2)<br/> bouton3 = Radiobutton(fenetre, text="Peu être", variable=value, value=3)<br/> bouton1.pack()<br/> bouton2.pack()<br/> bouton3.pack()
== Les listes ==
 
Les listes


Les listes permettent de récupérer une valeur sélectionnée par l'utilisateur.
Les listes permettent de récupérer une valeur sélectionnée par l'utilisateur.


# liste<br/> liste = Listbox(fenetre)<br/> liste.insert(1, "Python")<br/> liste.insert(2, "PHP")<br/> liste.insert(3, "jQuery")<br/> liste.insert(4, "CSS")<br/> liste.insert(5, "Javascript")
http://apprendre-python.com/images/tkinter-list.png
<pre><span class="c1"># liste</span>
<span class="n">liste</span> <span class="o">=</span> <span class="n">Listbox</span><span class="p">(</span><span class="n">fenetre</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"Python"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"PHP"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"jQuery"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s2">"CSS"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s2">"Javascript"</span><span class="p">)</span>


liste.pack()
<span class="n">liste</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


Canvas
== Canvas ==


Un canvas (toile, tableau en français) est un espace dans lequel vous pouvez dessiner ou écrire ce que vous voulez:
Un canvas (toile, tableau en français) est un espace dans lequel vous pouvez dessiner ou écrire ce que vous voulez:
<pre><span class="c1"># canvas</span>
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">120</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'yellow'</span><span class="p">)</span>
<span class="n">ligne1</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_line</span><span class="p">(</span><span class="mi">75</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">75</span><span class="p">,</span> <span class="mi">120</span><span class="p">)</span>
<span class="n">ligne2</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_line</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">60</span><span class="p">,</span> <span class="mi">150</span><span class="p">,</span> <span class="mi">60</span><span class="p">)</span>
<span class="n">txt</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_text</span><span class="p">(</span><span class="mi">75</span><span class="p">,</span> <span class="mi">60</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Cible"</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="s2">"Arial 16 italic"</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="s2">"blue"</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


# canvas<br/> canvas = Canvas(fenetre, width=150, height=120, background='yellow')<br/> ligne1 = canvas.create_line(75, 0, 75, 120)<br/> ligne2 = canvas.create_line(0, 60, 150, 60)<br/> txt = canvas.create_text(75, 60, text="Cible", font="Arial 16 italic", fill="blue")<br/> canvas.pack()
http://apprendre-python.com/images/tkinter-canvas.png


Vous pouvez créer d'autres éléments:
Vous pouvez créer d'autres éléments:
<pre><span class="n">create_arc</span><span class="p">()</span>        <span class="p">:</span>  <span class="n">arc</span> <span class="n">de</span> <span class="n">cercle</span>
<span class="n">create_bitmap</span><span class="p">()</span>    <span class="p">:</span>  <span class="n">bitmap</span>
<span class="n">create_image</span><span class="p">()</span>      <span class="p">:</span>  <span class="n">image</span>
<span class="n">create_line</span><span class="p">()</span>      <span class="p">:</span>  <span class="n">ligne</span>
<span class="n">create_oval</span><span class="p">()</span>      <span class="p">:</span>  <span class="n">ovale</span>
<span class="n">create_polygon</span><span class="p">()</span>    <span class="p">:</span>  <span class="n">polygone</span>
<span class="n">create_rectangle</span><span class="p">()</span>  <span class="p">:</span>  <span class="n">rectangle</span>
<span class="n">create_text</span><span class="p">()</span>      <span class="p">:</span>  <span class="n">texte</span>
<span class="n">create_window</span><span class="p">()</span>    <span class="p">:</span>  <span class="n">fenetre</span>
</pre>


create_arc()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; arc de cercle<br/> create_bitmap()&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; bitmap<br/> create_image()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; image<br/> create_line()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; ligne<br/> create_oval()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; ovale<br/> create_polygon()&nbsp;&nbsp;&nbsp; :&nbsp; polygone<br/> create_rectangle()&nbsp; :&nbsp; rectangle<br/> create_text()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; texte<br/> create_window()&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; fenetre
Si vous voulez changer les coordonnées d'un élement crée dans le canevas, vous pouvez utiliser la méthode '''coords ''' .
 
<pre>canvas.coords(élément, x0, y0, x1, y1)
Si vous voulez changer les coordonnées d'un élement crée dans le canevas, vous pouvez utiliser la méthode coords .
</pre>


canvas.coords(élément, x0, y0, x1, y1)
Pour supprimer un élément vous pouvez utiliser la méthode '''delete'''
 
<pre>canvas.delete(élément)
Pour supprimer un élément vous pouvez utiliser la méthode delete
</pre>
 
canvas.delete(élément)


Vous pouvez trouver d'autres méthodes utiles en exécutant l'instruction suivante:
Vous pouvez trouver d'autres méthodes utiles en exécutant l'instruction suivante:
<pre><span class="k">print</span> <span class="nb">dir</span><span class="p">(</span><span class="n">Canvas</span><span class="p">())</span>
</pre>


print dir(Canvas())
ou visitez la page suivante [http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/canvas-methods.html infohost]


ou visitez la page suivante infohost<br/> Scale
== Scale ==


Le widget scale permet de récupérer une valeur numérique via un scroll
Le widget scale permet de récupérer une valeur numérique via un scroll
<pre><span class="n">value</span> <span class="o">=</span> <span class="n">DoubleVar</span><span class="p">()</span>
<span class="n">scale</span> <span class="o">=</span> <span class="n">Scale</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
<span class="n">scale</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


value = DoubleVar()<br/> scale = Scale(fenetre, variable=value)<br/> scale.pack()
http://apprendre-python.com/images/tkinter-scale.png


Frames
== Frames ==


Les frames (cadres) sont des conteneurs qui permettent de séparer des éléments.
Les frames (cadres) sont des conteneurs qui permettent de séparer des éléments.
<pre><span class="n">fenetre</span><span class="p">[</span><span class="s1">'bg'</span><span class="p">]</span><span class="o">=</span><span class="s1">'white'</span>


fenetre['bg']='white'
<span class="c1"># frame 1</span>
<span class="n">Frame1</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span>
<span class="n">Frame1</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>


# frame 1<br/> Frame1 = Frame(fenetre, borderwidth=2, relief=GROOVE)<br/> Frame1.pack(side=LEFT, padx=30, pady=30)
<span class="c1"># frame 2</span>
<span class="n">Frame2</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span>
<span class="n">Frame2</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>


# frame 2<br/> Frame2 = Frame(fenetre, borderwidth=2, relief=GROOVE)<br/> Frame2.pack(side=LEFT, padx=10, pady=10)
<span class="c1"># frame 3 dans frame 2</span>
<span class="n">Frame3</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">Frame2</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"white"</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span>
<span class="n">Frame3</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">RIGHT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>


# frame 3 dans frame 2<br/> Frame3 = Frame(Frame2, bg="white", borderwidth=2, relief=GROOVE)<br/> Frame3.pack(side=RIGHT, padx=5, pady=5)
<span class="c1"># Ajout de labels</span>
<span class="n">Label</span><span class="p">(</span><span class="n">Frame1</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Frame 1"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">Label</span><span class="p">(</span><span class="n">Frame2</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Frame 2"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">Label</span><span class="p">(</span><span class="n">Frame3</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Frame 3"</span><span class="p">,</span><span class="n">bg</span><span class="o">=</span><span class="s2">"white"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre>


# Ajout de labels<br/> Label(Frame1, text="Frame 1").pack(padx=10, pady=10)<br/> Label(Frame2, text="Frame 2").pack(padx=10, pady=10)<br/> Label(Frame3, text="Frame 3",bg="white").pack(padx=10, pady=10)
http://apprendre-python.com/images/tkinter-frame.png


PanedWindow
== PanedWindow ==


Le panedwindow est un conteneur qui peut contenir autant de panneaux que nécessaire disposé horizontalement ou verticalement.
Le '''panedwindow ''' est un conteneur qui peut contenir autant de panneaux que nécessaire disposé horizontalement ou verticalement.
<pre><span class="n">p</span> <span class="o">=</span> <span class="n">PanedWindow</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">orient</span><span class="o">=</span><span class="n">HORIZONTAL</span><span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">TOP</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="n">Y</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="n">BOTH</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Label</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Volet 1'</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'blue'</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">CENTER</span><span class="p">))</span>
<span class="n">p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Label</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Volet 2'</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'white'</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">CENTER</span><span class="p">)</span> <span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Label</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Volet 3'</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'red'</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">CENTER</span><span class="p">)</span> <span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


p = PanedWindow(fenetre, orient=HORIZONTAL)<br/> p.pack(side=TOP, expand=Y, fill=BOTH, pady=2, padx=2)<br/> p.add(Label(p, text='Volet 1', background='blue', anchor=CENTER))<br/> p.add(Label(p, text='Volet 2', background='white', anchor=CENTER) )<br/> p.add(Label(p, text='Volet 3', background='red', anchor=CENTER) )<br/> p.pack()
http://apprendre-python.com/images/tkinter-paned-window.pnghttp://apprendre-python.com/images/tkinter-paned-window2.png


[Version horizontale] [Version verticale]<br/> Spinbox
== Spinbox ==


La spinbox propose à l'utilisateur de choisir un nombre
La '''spinbox ''' propose à l'utilisateur de choisir un nombre
<pre><span class="n">s</span> <span class="o">=</span> <span class="n">Spinbox</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">from_</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">s</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


s = Spinbox(fenetre, from_=0, to=10)<br/> s.pack()
http://apprendre-python.com/images/tkinter-spinbox.png


[Version verticale]<br/> LabelFrame
== LabelFrame ==


Le labelframe est un cadre avec un label.
Le labelframe est un cadre avec un label.
<pre><span class="n">l</span> <span class="o">=</span> <span class="n">LabelFrame</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Titre de la frame"</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="n">l</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">fill</span><span class="o">=</span><span class="s2">"both"</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="s2">"yes"</span><span class="p">)</span>
<span class="n">Label</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"A l'intérieure de la frame"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


l = LabelFrame(fenetre, text="Titre de la frame", padx=20, pady=20)<br/> l.pack(fill="both", expand="yes")<br/> &nbsp;<br/> Label(l, text="A l'intérieure de la frame").pack()
http://apprendre-python.com/images/tkinter-labelframe.png
 
[Version verticale]<br/> Les alertes


Pour pouvoir utiliser les alertes de votre os, vous pouvez importer le module tkMessageBox (Python 2).
== Les alertes ==


from tkMessageBox import *
Pour pouvoir utiliser les alertes de votre os, vous pouvez importer le module '''tkMessageBox ''' (Python 2).
<pre><span class="kn">from</span> <span class="nn">tkMessageBox</span> <span class="kn">import</span> <span class="o">*</span>
</pre>


Pour python 3:
Pour python 3:
 
<pre>from tkinter.messagebox import *
from tkinter.messagebox import *
</pre>


Exemple d'utilisation:
Exemple d'utilisation:
<pre><span class="k">def</span> <span class="nf">callback</span><span class="p">():</span>
    <span class="k">if</span> <span class="n">askyesno</span><span class="p">(</span><span class="s1">'Titre 1'</span><span class="p">,</span> <span class="s1">'Êtes-vous sûr de vouloir faire ça?'</span><span class="p">):</span>
        <span class="n">showwarning</span><span class="p">(</span><span class="s1">'Titre 2'</span><span class="p">,</span> <span class="s1">'Tant pis...'</span><span class="p">)</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">showinfo</span><span class="p">(</span><span class="s1">'Titre 3'</span><span class="p">,</span> <span class="s1">'Vous avez peur!'</span><span class="p">)</span>
        <span class="n">showerror</span><span class="p">(</span><span class="s2">"Titre 4"</span><span class="p">,</span> <span class="s2">"Aha"</span><span class="p">)</span>


def callback():<br/> &nbsp;&nbsp;&nbsp; if askyesno('Titre 1', 'Êtes-vous sûr de vouloir faire ça?'):<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showwarning('Titre 2', 'Tant pis...')<br/> &nbsp;&nbsp;&nbsp; else:<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showinfo('Titre 3', 'Vous avez peur!')<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showerror("Titre 4", "Aha")
<span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s1">'Action'</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">callback</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


Button(text='Action', command=callback).pack()
http://apprendre-python.com/images/tkinter-dialog.png
 
[Version verticale]


Voici les alertes possibles:
Voici les alertes possibles:
<pre>showinfo()
showwarning()
showerror()
askquestion()
askokcancel()
askyesno()
askretrycancel()
</pre>


showinfo()<br/> showwarning()<br/> showerror()<br/> askquestion()<br/> askokcancel()<br/> askyesno()<br/> askretrycancel()
== Barre de menu ==


Barre de menu
Il est possible de créer une barre de menu comme-ceci:
<pre><span class="k">def</span> <span class="nf">alert</span><span class="p">():</span>
    <span class="n">showinfo</span><span class="p">(</span><span class="s2">"alerte"</span><span class="p">,</span> <span class="s2">"Bravo!"</span><span class="p">)</span>


Il est possible de créer une barre de menu comme-ceci:
<span class="n">menubar</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">fenetre</span><span class="p">)</span>


def alert():<br/> &nbsp;&nbsp;&nbsp; showinfo("alerte", "Bravo!")
<span class="n">menu1</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">menubar</span><span class="p">,</span> <span class="n">tearoff</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Créer"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Editer"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_separator</span><span class="p">()</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Quitter"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">fenetre</span><span class="o">.</span><span class="n">quit</span><span class="p">)</span>
<span class="n">menubar</span><span class="o">.</span><span class="n">add_cascade</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Fichier"</span><span class="p">,</span> <span class="n">menu</span><span class="o">=</span><span class="n">menu1</span><span class="p">)</span>


menubar = Menu(fenetre)
<span class="n">menu2</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">menubar</span><span class="p">,</span> <span class="n">tearoff</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">menu2</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Couper"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu2</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Copier"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu2</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Coller"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menubar</span><span class="o">.</span><span class="n">add_cascade</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Editer"</span><span class="p">,</span> <span class="n">menu</span><span class="o">=</span><span class="n">menu2</span><span class="p">)</span>


menu1 = Menu(menubar, tearoff=0)<br/> menu1.add_command(label="Créer", command=alert)<br/> menu1.add_command(label="Editer", command=alert)<br/> menu1.add_separator()<br/> menu1.add_command(label="Quitter", command=fenetre.quit)<br/> menubar.add_cascade(label="Fichier", menu=menu1)
<span class="n">menu3</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">menubar</span><span class="p">,</span> <span class="n">tearoff</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">menu3</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"A propos"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menubar</span><span class="o">.</span><span class="n">add_cascade</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Aide"</span><span class="p">,</span> <span class="n">menu</span><span class="o">=</span><span class="n">menu3</span><span class="p">)</span>


menu2 = Menu(menubar, tearoff=0)<br/> menu2.add_command(label="Couper", command=alert)<br/> menu2.add_command(label="Copier", command=alert)<br/> menu2.add_command(label="Coller", command=alert)<br/> menubar.add_cascade(label="Editer", menu=menu2)
<span class="n">fenetre</span><span class="o">.</span><span class="n">config</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="n">menubar</span><span class="p">)</span>
</pre>


menu3 = Menu(menubar, tearoff=0)<br/> menu3.add_command(label="A propos", command=alert)<br/> menubar.add_cascade(label="Aide", menu=menu3)
http://apprendre-python.com/images/tkinter-menu.png


fenetre.config(menu=menubar)
----


[Version verticale]<br/> Connaitre toutes les méthodes / options d'un widget
== Connaitre toutes les méthodes / options d'un widget ==


Pour cela il vous suffit d'exécuter la ligne suivante:
Pour cela il vous suffit d'exécuter la ligne suivante:
<pre class="cdoe">print dir(Button())
</pre>


print dir(Button())
== Les attributs standards ==
 
Les attributs standards


Il est possible de changer la valeur d'attributs présents sur les widgets<br/> Placer des widgets
Il est possible de changer la valeur d'attributs présents sur les widgets


Il est possible de placer les widgets à l'aide du paramètre side :
== Placer des widgets ==


side=TOP&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp; haut<br/> side=LEFT&nbsp;&nbsp;&nbsp; :&nbsp; gauche<br/> side=BOTTOM&nbsp; :&nbsp; bas<br/> side=RIGHT&nbsp;&nbsp; :&nbsp; droite
Il est possible de placer les widgets à l'aide du paramètre '''side ''' :
<pre><span class="n">side</span><span class="o">=</span><span class="n">TOP</span>    <span class="p">:</span>  <span class="n">haut</span>
<span class="n">side</span><span class="o">=</span><span class="n">LEFT</span>    <span class="p">:</span>  <span class="n">gauche</span>
<span class="n">side</span><span class="o">=</span><span class="n">BOTTOM</span>  <span class="p">:</span>  <span class="n">bas</span>
<span class="n">side</span><span class="o">=</span><span class="n">RIGHT</span>  <span class="p">:</span>  <span class="n">droite</span>
</pre>


Exemple:
Exemple:
<pre><span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'ivory'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">TOP</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 1'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 2'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">RIGHT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
</pre>


Canvas(fenetre, width=250, height=100, bg='ivory').pack(side=TOP, padx=5, pady=5)<br/> Button(fenetre, text ='Bouton 1').pack(side=LEFT, padx=5, pady=5)<br/> Button(fenetre, text ='Bouton 2').pack(side=RIGHT, padx=5, pady=5)
http://apprendre-python.com/images/tkinter-side.png
 
[Version verticale]


Autre exemple:
Autre exemple:
<pre><span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'ivory'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 1'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">TOP</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 2'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">BOTTOM</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
</pre>


Canvas(fenetre, width=250, height=50, bg='ivory').pack(side=LEFT, padx=5, pady=5)<br/> Button(fenetre, text ='Bouton 1').pack(side=TOP, padx=5, pady=5)<br/> Button(fenetre, text ='Bouton 2').pack(side=BOTTOM, padx=5, pady=5)
http://apprendre-python.com/images/tkinter-side-bottom.png


[Version verticale]<br/> Les unités de dimensions
== Les unités de dimensions ==


Si vous indiquez une dimension à travers un integer, l'unité utilisée sera les "pixels". Il est cependant possible de changer l'unité:
Si vous indiquez une dimension à travers un integer, l'unité utilisée sera les "pixels". Il est cependant possible de changer l'unité:
<pre>i : pouces
m : millimètre
c : centimètre
</pre>


i : pouces<br/> m : millimètre<br/> c : centimètre
== Les options de dimensions ==
 
<pre>'''height'''            : Hauteur du widget.
Les options de dimensions
'''width'''              : Largeur du widget.
 
'''padx, pady'''        : Espace supplémentaire autour du widget. X pour horizontal et V pour vertical.
height&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Hauteur du widget.<br/> width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Largeur du widget.<br/> padx, pady&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Espace supplémentaire autour du widget. X pour horizontal et V pour vertical.<br/> borderwidth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Taille de la bordure.<br/> highlightthickness : Largeur du rectangle lorsque le widget a le focus.<br/> selectborderwidth&nbsp; : Largeur de la bordure tridimensionnel autour du widget sélectionné.<br/> wraplength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Nombre de ligne maximum pour les widget en mode "word wrapping".
'''borderwidth'''        : Taille de la bordure.
'''highlightthickness''' : Largeur du rectangle lorsque le widget a le focus.
'''selectborderwidth'''  : Largeur de la bordure tridimensionnel autour du widget sélectionné.
'''wraplength'''        : Nombre de ligne maximum pour les widget en mode "word wrapping".
</pre>


Les options de couleurs
== Les options de couleurs ==


Il est possible d'indiquer une valeur de couleur par son nom en anglais: "white", "black", "red", "yellow", etc. ou par son code hexadécimale: #000000, #00FFFF, etc.
Il est possible d'indiquer une valeur de couleur par son nom en anglais: "white", "black", "red", "yellow", etc. ou par son code hexadécimale: #000000, #00FFFF, etc.
<pre>'''background (ou bg)'''  : couleur de fond du widget.
'''foreground (ou fg)'''  : couleur de premier plan du widget.
'''activebackground'''    : couleur de fond du widget lorsque celui-ci est actif.
'''activeForeground'''    : couleur de premier plan du widget lorsque le widget est actif.
'''disabledForeground'''  : couleur de premier plan du widget lorsque le widget est désactivé.
'''highlightbackground'''  : Couleur de fond de la région de surbrillance lorsque le widget a le focus.
'''highlightcolor'''      : couleur de premier plan de la région en surbrillance lorsque le widget a le focus.
'''selectbackground'''    : Couleur de fond pour les éléments sélectionnés.
'''selectforeground'''    : couleur de premier plan pour les éléments sélectionnés.
</pre>


background (ou bg)&nbsp;&nbsp; : couleur de fond du widget.<br/> foreground (ou fg)&nbsp;&nbsp; : couleur de premier plan du widget.<br/> activebackground&nbsp;&nbsp;&nbsp;&nbsp; : couleur de fond du widget lorsque celui-ci est actif.<br/> activeForeground&nbsp;&nbsp;&nbsp;&nbsp; : couleur de premier plan du widget lorsque le widget est actif.<br/> disabledForeground&nbsp;&nbsp; : couleur de premier plan du widget lorsque le widget est désactivé.<br/> highlightbackground&nbsp; : Couleur de fond de la région de surbrillance lorsque le widget a le focus.<br/> highlightcolor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : couleur de premier plan de la région en surbrillance lorsque le widget a le focus.<br/> selectbackground&nbsp;&nbsp;&nbsp;&nbsp; : Couleur de fond pour les éléments sélectionnés.<br/> selectforeground&nbsp;&nbsp;&nbsp;&nbsp; : couleur de premier plan pour les éléments sélectionnés.
== Le curseur ==
 
Le curseur


Vous pouvez changer l'apparance de votre curseur:
Vous pouvez changer l'apparance de votre curseur:
<pre><span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"arrow"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"arrow"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"circle"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"circle"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"clock"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"clock"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"cross"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"cross"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"dotbox"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"dotbox"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"exchange"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"exchange"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"fleur"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"fleur"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"heart"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"heart"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"man"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"man"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"mouse"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"mouse"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"pirate"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"pirate"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"plus"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"plus"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"shuttle"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"shuttle"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"sizing"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"sizing"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"spider"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"spider"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"spraycan"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"spraycan"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"star"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"star"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"target"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"target"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"tcross"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"tcross"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"trek"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"trek"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"watch"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"watch"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


Button(fenetre, text ="arrow", relief=RAISED, cursor="arrow").pack()<br/> Button(fenetre, text ="circle", relief=RAISED, cursor="circle").pack()<br/> Button(fenetre, text ="clock", relief=RAISED, cursor="clock").pack()<br/> Button(fenetre, text ="cross", relief=RAISED, cursor="cross").pack()<br/> Button(fenetre, text ="dotbox", relief=RAISED, cursor="dotbox").pack()<br/> Button(fenetre, text ="exchange", relief=RAISED, cursor="exchange").pack()<br/> Button(fenetre, text ="fleur", relief=RAISED, cursor="fleur").pack()<br/> Button(fenetre, text ="heart", relief=RAISED, cursor="heart").pack()<br/> Button(fenetre, text ="man", relief=RAISED, cursor="man").pack()<br/> Button(fenetre, text ="mouse", relief=RAISED, cursor="mouse").pack()<br/> Button(fenetre, text ="pirate", relief=RAISED, cursor="pirate").pack()<br/> Button(fenetre, text ="plus", relief=RAISED, cursor="plus").pack()<br/> Button(fenetre, text ="shuttle", relief=RAISED, cursor="shuttle").pack()<br/> Button(fenetre, text ="sizing", relief=RAISED, cursor="sizing").pack()<br/> Button(fenetre, text ="spider", relief=RAISED, cursor="spider").pack()<br/> Button(fenetre, text ="spraycan", relief=RAISED, cursor="spraycan").pack()<br/> Button(fenetre, text ="star", relief=RAISED, cursor="star").pack()<br/> Button(fenetre, text ="target", relief=RAISED, cursor="target").pack()<br/> Button(fenetre, text ="tcross", relief=RAISED, cursor="tcross").pack()<br/> Button(fenetre, text ="trek", relief=RAISED, cursor="trek").pack()<br/> Button(fenetre, text ="watch", relief=RAISED, cursor="watch").pack()
== Le relief ==
 
Le relief


Vous pouvez changer le relief sur vos éléments:
Vous pouvez changer le relief sur vos éléments:
<pre><span class="n">FLAT</span>
<span class="n">RAISED</span>
<span class="n">SUNKEN</span>
<span class="n">GROOVE</span>
<span class="n">RIDGE</span>
</pre>
<pre><span class="n">b1</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"FLAT"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">FLAT</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b2</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"RAISED"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b3</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"SUNKEN"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">SUNKEN</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b4</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"GROOVE"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b5</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"RIDGE"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RIDGE</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


FLAT<br/> RAISED<br/> SUNKEN<br/> GROOVE<br/> RIDGE
http://apprendre-python.com/images/tkinter-relief.png
 
b1 = Button(fenetre, text ="FLAT", relief=FLAT).pack()<br/> b2 = Button(fenetre, text ="RAISED", relief=RAISED).pack()<br/> b3 = Button(fenetre, text ="SUNKEN", relief=SUNKEN).pack()<br/> b4 = Button(fenetre, text ="GROOVE", relief=GROOVE).pack()<br/> b5 = Button(fenetre, text ="RIDGE", relief=RIDGE).pack()


[Version verticale]<br/> La grille
== La grille ==


Il est possible de placer les éléments en raisonnant en grille:
Il est possible de placer les éléments en raisonnant en grille:
<pre><span class="k">for</span> <span class="n">ligne</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">colonne</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
        <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L</span><span class="si">%s</span><span class="s1">-C</span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">ligne</span><span class="p">,</span> <span class="n">colonne</span><span class="p">),</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="n">ligne</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="n">colonne</span><span class="p">)</span>
</pre>


for ligne in range(5):<br/> &nbsp;&nbsp;&nbsp; for colonne in range(5):<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button(fenetre, text='L%s-C%s' % (ligne, colonne), borderwidth=1).grid(row=ligne, column=colonne)
http://apprendre-python.com/images/tkinter-grid.png
 
<pre><span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L1-C1'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
[Version verticale]
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L1-C2'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L2-C3'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L2-C4'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L3-C3'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
</pre>


Button(fenetre, text='L1-C1', borderwidth=1).grid(row=1, column=1)<br/> Button(fenetre, text='L1-C2', borderwidth=1).grid(row=1, column=2)<br/> Button(fenetre, text='L2-C3', borderwidth=1).grid(row=2, column=3)<br/> Button(fenetre, text='L2-C4', borderwidth=1).grid(row=2, column=4)<br/> Button(fenetre, text='L3-C3', borderwidth=1).grid(row=3, column=3)
http://apprendre-python.com/images/tkinter-grid-2.png


[Version verticale]<br/> Intégrer une image
== Intégrer une image ==


Pour intégrer une image vous pouvez créer un canevas et l'ajouter à l'intérieur comme ceci:
Pour intégrer une image vous pouvez créer un canevas et l'ajouter à l'intérieur comme ceci:
<pre><span class="n">photo</span> <span class="o">=</span> <span class="n">PhotoImage</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="s2">"ma_photo.png"</span><span class="p">)</span>


photo = PhotoImage(file="ma_photo.png")
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">350</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">200</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">create_image</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">NW</span><span class="p">,</span> <span class="n">image</span><span class="o">=</span><span class="n">photo</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


canvas = Canvas(fenetre,width=350, height=200)<br/> canvas.create_image(0, 0, anchor=NW, image=photo)<br/> canvas.pack()
http://apprendre-python.com/images/tkinter-image.png


[Version verticale]<br/> Récupérer la valeur d'un input
== Récupérer la valeur d'un input ==


Pour récupérer la valeur d'un input il vous faudra utiliser la méthode get() :
Pour récupérer la valeur d'un input il vous faudra utiliser la méthode '''get() ''' :
<pre><span class="k">def</span> <span class="nf">recupere</span><span class="p">():</span>
    <span class="n">showinfo</span><span class="p">(</span><span class="s2">"Alerte"</span><span class="p">,</span> <span class="n">entree</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>


def recupere():<br/> &nbsp;&nbsp;&nbsp; showinfo("Alerte", entree.get())
<span class="n">value</span> <span class="o">=</span> <span class="n">StringVar</span><span class="p">()</span>
<span class="n">value</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"Valeur"</span><span class="p">)</span>
<span class="n">entree</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
<span class="n">entree</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>


value = StringVar()<br/> value.set("Valeur")<br/> entree = Entry(fenetre, textvariable=value, width=30)<br/> entree.pack()
<span class="n">bouton</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Valider"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">recupere</span><span class="p">)</span>
<span class="n">bouton</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


bouton = Button(fenetre, text="Valider", command=recupere)<br/> bouton.pack()
== Récupérer une image et l'afficher ==
 
Récupérer une image et l'afficher


Pour cela, vous devez importer le module suivant:
Pour cela, vous devez importer le module suivant:
<pre><span class="kn">from</span> <span class="nn">tkinter.filedialog</span> <span class="kn">import</span> <span class="o">*</span>
</pre>
<pre><span class="n">filepath</span> <span class="o">=</span> <span class="n">askopenfilename</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">"Ouvrir une image"</span><span class="p">,</span><span class="n">filetypes</span><span class="o">=</span><span class="p">[(</span><span class="s1">'png files'</span><span class="p">,</span><span class="s1">'.png'</span><span class="p">),(</span><span class="s1">'all files'</span><span class="p">,</span><span class="s1">'.*'</span><span class="p">)])</span>
<span class="n">photo</span> <span class="o">=</span> <span class="n">PhotoImage</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="n">filepath</span><span class="p">)</span>
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">photo</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">height</span><span class="o">=</span><span class="n">photo</span><span class="o">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"yellow"</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">create_image</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">NW</span><span class="p">,</span> <span class="n">image</span><span class="o">=</span><span class="n">photo</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


from tkinter.filedialog import *
http://apprendre-python.com/images/tkinter-open-file.png


filepath = askopenfilename(title="Ouvrir une image",filetypes=[('png files','.png'),('all files','.*')])<br/> photo = PhotoImage(file=filepath)<br/> canvas = Canvas(fenetre, width=photo.width(), height=photo.height(), bg="yellow")<br/> canvas.create_image(0, 0, anchor=NW, image=photo)<br/> canvas.pack()
La fonction '''askopenfilename ''' retourne le chemin du fichier que vous avez choisi avec le nom de celui-ci.


[Version verticale]
Exemple: '''/home/olivier/ma_photo.png'''


La fonction askopenfilename retourne le chemin du fichier que vous avez choisi avec le nom de celui-ci.
== Récupérer un fichier texte et l'afficher ==
<pre><span class="n">filename</span> <span class="o">=</span> <span class="n">askopenfilename</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">"Ouvrir votre document"</span><span class="p">,</span><span class="n">filetypes</span><span class="o">=</span><span class="p">[(</span><span class="s1">'txt files'</span><span class="p">,</span><span class="s1">'.txt'</span><span class="p">),(</span><span class="s1">'all files'</span><span class="p">,</span><span class="s1">'.*'</span><span class="p">)])</span>
<span class="n">fichier</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span>
<span class="n">content</span> <span class="o">=</span> <span class="n">fichier</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="n">fichier</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>


Exemple: /home/olivier/ma_photo.png<br/> Récupérer un fichier texte et l'afficher
<span class="n">Label</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="n">content</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre>


filename = askopenfilename(title="Ouvrir votre document",filetypes=[('txt files','.txt'),('all files','.*')])<br/> fichier = open(filename, "r")<br/> content = fichier.read()<br/> fichier.close()
== Les évènements ==


Label(fenetre, text=content).pack(padx=10, pady=10)
Vous pouvez récupérer les actions utilisateurs à travers les '''events ''' (évènement en français).


Les évènements
Pour chaque widget, vous pouvez ''binder '' (lier en français) un évènement, par exemple dire lorsque l'utilisateur appuie sur telle touche, faire cela.
 
Vous pouvez récupérer les actions utilisateurs à travers les events (évènement en français).
 
Pour chaque widget, vous pouvez binder (lier en français) un évènement, par exemple dire lorsque l'utilisateur appuie sur telle touche, faire cela.


Voici un exemple qui récupère les touches appuyées par l'utilisateur:
Voici un exemple qui récupère les touches appuyées par l'utilisateur:
<pre><span class="k">def</span> <span class="nf">clavier</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
    <span class="n">touche</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">keysym</span>
    <span class="k">print</span><span class="p">(</span><span class="n">touche</span><span class="p">)</span>


def clavier(event):<br/> &nbsp;&nbsp;&nbsp; touche = event.keysym<br/> &nbsp;&nbsp;&nbsp; print(touche)
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span>
 
<span class="n">canvas</span><span class="o">.</span><span class="n">focus_set</span><span class="p">()</span>
canvas = Canvas(fenetre, width=500, height=500)<br/> canvas.focus_set()<br/> canvas.bind("<Key>", clavier)<br/> canvas.pack()
<span class="n">canvas</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s2">"<Key>"</span><span class="p">,</span> <span class="n">clavier</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>


On remarque que l' évènement est encadré par des chevrons .
On remarque que l' <u>évènement est encadré par des chevrons </u> .


D'autres évènements existent:
D'autres évènements existent:
<pre><Button-1>          : Click gauche
<Button-2>          : Click milieu
<Button-3>          : Click droit
<Double-Button-1>    : Double click droit
<Double-Button-2>    : Double click gauche
<KeyPress>          : Pression sur une touche
<KeyPress-a>        : Pression sur la touche '''A''' (minuscule)
<KeyPress-A>        : Pression sur la touche '''A''' (majuscule)
<Return>            : Pression sur la touche entrée
<Escape>            : Touche Echap
<Up>                : Pression sur la flèche directionnelle haut
<Down>              : Pression sur la flèche directionnelle bas
<ButtonRelease>      : Lorsque qu'on relache le click
<Motion>            : Mouvement de la souris
<B1-Motion>          : Mouvement de la souris avec click gauche
<Enter>              : Entrée du curseur dans un widget
<Leave>              : Sortie du curseur dans un widget
<Configure>          : Redimensionnement de la fenêtre
<Map> <Unmap>        : Ouverture et iconification de la fenêtre
<MouseWheel>        : Utilisation de la roulette
</pre>


<Button-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Click gauche<br/> <Button-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Click milieu<br/> <Button-3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Click droit<br/> <Double-Button-1>&nbsp;&nbsp;&nbsp; : Double click droit<br/> <Double-Button-2>&nbsp;&nbsp;&nbsp; : Double click gauche<br/> <KeyPress>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Pression sur une touche<br/> <KeyPress-a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Pression sur la touche A (minuscule)<br/> <KeyPress-A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Pression sur la touche A (majuscule)<br/> <Return>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Pression sur la touche entrée<br/> <Escape>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Touche Echap<br/> <Up>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Pression sur la flèche directionnelle haut<br/> <Down>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Pression sur la flèche directionnelle bas<br/> <ButtonRelease>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Lorsque qu'on relache le click<br/> <Motion>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Mouvement de la souris<br/> <B1-Motion>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Mouvement de la souris avec click gauche<br/> <Enter>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Entrée du curseur dans un widget<br/> <Leave>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Sortie du curseur dans un widget<br/> <Configure>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Redimensionnement de la fenêtre<br/> <Map> <Unmap>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Ouverture et iconification de la fenêtre<br/> <MouseWheel>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Utilisation de la roulette
Pour supprimer la liasion de l'évènement vous pouvez utiliser les méthodes '''unbind ''' ou '''unbind_all ''' .
 
Pour supprimer la liasion de l'évènement vous pouvez utiliser les méthodes unbind ou unbind_all .


Voici un exemple où l'on peut bouger un carré avec les touches directionnelles:
Voici un exemple où l'on peut bouger un carré avec les touches directionnelles:
<pre><span class="c1"># fonction appellée lorsque l'utilisateur presse une touche</span>
<span class="k">def</span> <span class="nf">clavier</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
    <span class="k">global</span> <span class="n">coords</span>


# fonction appellée lorsque l'utilisateur presse une touche<br/> def clavier(event):<br/> &nbsp;&nbsp;&nbsp; global coords
    <span class="n">touche</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">keysym</span>


&nbsp;&nbsp;&nbsp; touche = event.keysym
    <span class="k">if</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Up"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">10</span><span class="p">)</span>
    <span class="k">elif</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Down"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
    <span class="k">elif</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Right"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">10</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
    <span class="k">elif</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Left"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span><span class="mi">10</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
    <span class="c1"># changement de coordonnées pour le rectangle</span>
    <span class="n">canvas</span><span class="o">.</span><span class="n">coords</span><span class="p">(</span><span class="n">rectangle</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">25</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">25</span><span class="p">)</span>


&nbsp;&nbsp;&nbsp; if touche == "Up":<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coords = (coords[0], coords[1] - 10)<br/> &nbsp;&nbsp;&nbsp; elif touche == "Down":<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coords = (coords[0], coords[1] + 10)<br/> &nbsp;&nbsp;&nbsp; elif touche == "Right":<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coords = (coords[0] + 10, coords[1])<br/> &nbsp;&nbsp;&nbsp; elif touche == "Left":<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coords = (coords[0] -10, coords[1])<br/> &nbsp;&nbsp;&nbsp; # changement de coordonnées pour le rectangle<br/> &nbsp;&nbsp;&nbsp; canvas.coords(rectangle, coords[0], coords[1], coords[0]+25, coords[1]+25)
<span class="c1"># création du canvas</span>
 
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"ivory"</span><span class="p">)</span>
# création du canvas<br/> canvas = Canvas(fenetre, width=250, height=250, bg="ivory")<br/> # coordonnées initiales<br/> coords = (0, 0)<br/> # création du rectangle<br/> rectangle = canvas.create_rectangle(0,0,25,25,fill="violet")<br/> # ajout du bond sur les touches du clavier<br/> canvas.focus_set()<br/> canvas.bind("<Key>", clavier)<br/> # création du canvas<br/> canvas.pack()
<span class="c1"># coordonnées initiales</span>
 
<span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
&nbsp;
<span class="c1"># création du rectangle</span>
<span class="n">rectangle</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_rectangle</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="n">fill</span><span class="o">=</span><span class="s2">"violet"</span><span class="p">)</span>
<span class="c1"># ajout du bond sur les touches du clavier</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">focus_set</span><span class="p">()</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s2">"<Key>"</span><span class="p">,</span> <span class="n">clavier</span><span class="p">)</span>
<span class="c1"># création du canvas</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
</pre>

Version du 20 novembre 2018 à 23:32

Python : Tkinter

 

Ce qui va suivre est entièrement issu de http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel

Je ne l'ai mis ici que pour référence rapide

 

Python 2, python 3

Les modules ne sont pas les mêmes suivant votre version de python. Si le message suivant apparaît lors de l'exécution de votre script:

ImportError: No module named 'Tkinter'

C'est que le module appelé n'est pas le bon par rapport à votre version python.

'''Python 2'''             '''Python 3'''
Tkinter         →  tkinter
Tix             →  tkinter.tix
ttk             →  tkinter.ttk
tkMessageBox    →  tkinter.messagebox
tkColorChooser  →  tkinter.colorchooser
tkFileDialog    →  tkinter.filedialog
tkCommonDialog  →  tkinter.commondialog
tkSimpleDialog  →  tkinter.simpledialog
tkFont          →  tkinter.font
Tkdnd           →  tkinter.dnd
ScrolledText    →  tkinter.scrolledtext

Hello world

Voici le code de votre premier hello world

<span class="c1"># -*- coding: utf-8 -*-</span>
 
<span class="kn">from</span> <span class="nn">tkinter</span> <span class="kn">import</span> <span class="o">*</span> 

<span class="n">fenetre</span> <span class="o">=</span> <span class="n">Tk</span><span class="p">()</span>

<span class="n">label</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Hello World"</span><span class="p">)</span>
<span class="n">label</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

<span class="n">fenetre</span><span class="o">.</span><span class="n">mainloop</span><span class="p">()</span>

Une fenêtre comme celle-ci devrait apparaître:

http://apprendre-python.com/images/hello-world.png

Les widget Tkinter

Pour créer un logiciel graphique vous devez ajouter dans une fenêtre des éléments graphiques que l'on nomme widget. Ce widget peut être tout aussi bien une liste déroulante que du texte.

Les boutons

Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci-dessous, on lui propose de fermer la fenêtre.

<span class="c1"># bouton de sortie</span>
<span class="n">bouton</span><span class="o">=</span><span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Fermer"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">fenetre</span><span class="o">.</span><span class="n">quit</span><span class="p">)</span>
<span class="n">bouton</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-button.png

Les labels

Les labels sont des espaces prévus pour écrire du texte. Les labels servent souvent à décrire un widget comme un input

<span class="c1"># label</span>
<span class="n">label</span> <span class="o">=</span> <span class="n">Label</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Texte par défaut"</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"yellow"</span><span class="p">)</span>
<span class="n">label</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-label.png

Entrée / input

<span class="c1"># entrée</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">StringVar</span><span class="p">()</span> 
<span class="n">value</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"texte par défaut"</span><span class="p">)</span>
<span class="n">entree</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">string</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
<span class="n">entree</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-input.png

Case à cocher

Les checkbox proposent à l'utilisateur de cocher une option.

<span class="c1"># checkbutton</span>
<span class="n">bouton</span> <span class="o">=</span> <span class="n">Checkbutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Nouveau?"</span><span class="p">)</span>
<span class="n">bouton</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-checkbox.png

Boutons radio

Les boutons radio sont des cases à cocher qui sont dans un groupe et dans ce groupe seul un élément peut être sélectionné.

<span class="c1"># radiobutton</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">StringVar</span><span class="p">()</span> 
<span class="n">bouton1</span> <span class="o">=</span> <span class="n">Radiobutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Oui"</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">bouton2</span> <span class="o">=</span> <span class="n">Radiobutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Non"</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">bouton3</span> <span class="o">=</span> <span class="n">Radiobutton</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Peu être"</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
<span class="n">bouton1</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">bouton2</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">bouton3</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

Les listes

Les listes permettent de récupérer une valeur sélectionnée par l'utilisateur.

http://apprendre-python.com/images/tkinter-list.png

<span class="c1"># liste</span>
<span class="n">liste</span> <span class="o">=</span> <span class="n">Listbox</span><span class="p">(</span><span class="n">fenetre</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"Python"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"PHP"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"jQuery"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s2">"CSS"</span><span class="p">)</span>
<span class="n">liste</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s2">"Javascript"</span><span class="p">)</span>

<span class="n">liste</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

Canvas

Un canvas (toile, tableau en français) est un espace dans lequel vous pouvez dessiner ou écrire ce que vous voulez:

<span class="c1"># canvas</span>
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">120</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'yellow'</span><span class="p">)</span>
<span class="n">ligne1</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_line</span><span class="p">(</span><span class="mi">75</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">75</span><span class="p">,</span> <span class="mi">120</span><span class="p">)</span>
<span class="n">ligne2</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_line</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">60</span><span class="p">,</span> <span class="mi">150</span><span class="p">,</span> <span class="mi">60</span><span class="p">)</span>
<span class="n">txt</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_text</span><span class="p">(</span><span class="mi">75</span><span class="p">,</span> <span class="mi">60</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Cible"</span><span class="p">,</span> <span class="n">font</span><span class="o">=</span><span class="s2">"Arial 16 italic"</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="s2">"blue"</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-canvas.png

Vous pouvez créer d'autres éléments:

<span class="n">create_arc</span><span class="p">()</span>        <span class="p">:</span>  <span class="n">arc</span> <span class="n">de</span> <span class="n">cercle</span>
<span class="n">create_bitmap</span><span class="p">()</span>     <span class="p">:</span>  <span class="n">bitmap</span>
<span class="n">create_image</span><span class="p">()</span>      <span class="p">:</span>  <span class="n">image</span>
<span class="n">create_line</span><span class="p">()</span>       <span class="p">:</span>  <span class="n">ligne</span>
<span class="n">create_oval</span><span class="p">()</span>       <span class="p">:</span>  <span class="n">ovale</span>
<span class="n">create_polygon</span><span class="p">()</span>    <span class="p">:</span>  <span class="n">polygone</span>
<span class="n">create_rectangle</span><span class="p">()</span>  <span class="p">:</span>  <span class="n">rectangle</span> 
<span class="n">create_text</span><span class="p">()</span>       <span class="p">:</span>  <span class="n">texte</span>
<span class="n">create_window</span><span class="p">()</span>     <span class="p">:</span>  <span class="n">fenetre</span>

Si vous voulez changer les coordonnées d'un élement crée dans le canevas, vous pouvez utiliser la méthode coords .

canvas.coords(élément, x0, y0, x1, y1)

Pour supprimer un élément vous pouvez utiliser la méthode delete

canvas.delete(élément)

Vous pouvez trouver d'autres méthodes utiles en exécutant l'instruction suivante:

<span class="k">print</span> <span class="nb">dir</span><span class="p">(</span><span class="n">Canvas</span><span class="p">())</span>

ou visitez la page suivante infohost

Scale

Le widget scale permet de récupérer une valeur numérique via un scroll

<span class="n">value</span> <span class="o">=</span> <span class="n">DoubleVar</span><span class="p">()</span>
<span class="n">scale</span> <span class="o">=</span> <span class="n">Scale</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">variable</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
<span class="n">scale</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-scale.png

Frames

Les frames (cadres) sont des conteneurs qui permettent de séparer des éléments.

<span class="n">fenetre</span><span class="p">[</span><span class="s1">'bg'</span><span class="p">]</span><span class="o">=</span><span class="s1">'white'</span>

<span class="c1"># frame 1</span>
<span class="n">Frame1</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span>
<span class="n">Frame1</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>

<span class="c1"># frame 2</span>
<span class="n">Frame2</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span>
<span class="n">Frame2</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>

<span class="c1"># frame 3 dans frame 2</span>
<span class="n">Frame3</span> <span class="o">=</span> <span class="n">Frame</span><span class="p">(</span><span class="n">Frame2</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"white"</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span>
<span class="n">Frame3</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">RIGHT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>

<span class="c1"># Ajout de labels</span>
<span class="n">Label</span><span class="p">(</span><span class="n">Frame1</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Frame 1"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">Label</span><span class="p">(</span><span class="n">Frame2</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Frame 2"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">Label</span><span class="p">(</span><span class="n">Frame3</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Frame 3"</span><span class="p">,</span><span class="n">bg</span><span class="o">=</span><span class="s2">"white"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>

http://apprendre-python.com/images/tkinter-frame.png

PanedWindow

Le panedwindow est un conteneur qui peut contenir autant de panneaux que nécessaire disposé horizontalement ou verticalement.

<span class="n">p</span> <span class="o">=</span> <span class="n">PanedWindow</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">orient</span><span class="o">=</span><span class="n">HORIZONTAL</span><span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">TOP</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="n">Y</span><span class="p">,</span> <span class="n">fill</span><span class="o">=</span><span class="n">BOTH</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Label</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Volet 1'</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'blue'</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">CENTER</span><span class="p">))</span>
<span class="n">p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Label</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Volet 2'</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'white'</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">CENTER</span><span class="p">)</span> <span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Label</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'Volet 3'</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="s1">'red'</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">CENTER</span><span class="p">)</span> <span class="p">)</span>
<span class="n">p</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-paned-window.pnghttp://apprendre-python.com/images/tkinter-paned-window2.png

Spinbox

La spinbox propose à l'utilisateur de choisir un nombre

<span class="n">s</span> <span class="o">=</span> <span class="n">Spinbox</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">from_</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="n">s</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-spinbox.png

LabelFrame

Le labelframe est un cadre avec un label.

<span class="n">l</span> <span class="o">=</span> <span class="n">LabelFrame</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Titre de la frame"</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="n">l</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">fill</span><span class="o">=</span><span class="s2">"both"</span><span class="p">,</span> <span class="n">expand</span><span class="o">=</span><span class="s2">"yes"</span><span class="p">)</span>
 
<span class="n">Label</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"A l'intérieure de la frame"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-labelframe.png

Les alertes

Pour pouvoir utiliser les alertes de votre os, vous pouvez importer le module tkMessageBox (Python 2).

<span class="kn">from</span> <span class="nn">tkMessageBox</span> <span class="kn">import</span> <span class="o">*</span>

Pour python 3:

from tkinter.messagebox import *

Exemple d'utilisation:

<span class="k">def</span> <span class="nf">callback</span><span class="p">():</span>
    <span class="k">if</span> <span class="n">askyesno</span><span class="p">(</span><span class="s1">'Titre 1'</span><span class="p">,</span> <span class="s1">'Êtes-vous sûr de vouloir faire ça?'</span><span class="p">):</span>
        <span class="n">showwarning</span><span class="p">(</span><span class="s1">'Titre 2'</span><span class="p">,</span> <span class="s1">'Tant pis...'</span><span class="p">)</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">showinfo</span><span class="p">(</span><span class="s1">'Titre 3'</span><span class="p">,</span> <span class="s1">'Vous avez peur!'</span><span class="p">)</span>
        <span class="n">showerror</span><span class="p">(</span><span class="s2">"Titre 4"</span><span class="p">,</span> <span class="s2">"Aha"</span><span class="p">)</span>

<span class="n">Button</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s1">'Action'</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">callback</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-dialog.png

Voici les alertes possibles:

showinfo()
showwarning()
showerror()
askquestion()
askokcancel()
askyesno()
askretrycancel()

Barre de menu

Il est possible de créer une barre de menu comme-ceci:

<span class="k">def</span> <span class="nf">alert</span><span class="p">():</span>
    <span class="n">showinfo</span><span class="p">(</span><span class="s2">"alerte"</span><span class="p">,</span> <span class="s2">"Bravo!"</span><span class="p">)</span>

<span class="n">menubar</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">fenetre</span><span class="p">)</span>

<span class="n">menu1</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">menubar</span><span class="p">,</span> <span class="n">tearoff</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Créer"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Editer"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_separator</span><span class="p">()</span>
<span class="n">menu1</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Quitter"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">fenetre</span><span class="o">.</span><span class="n">quit</span><span class="p">)</span>
<span class="n">menubar</span><span class="o">.</span><span class="n">add_cascade</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Fichier"</span><span class="p">,</span> <span class="n">menu</span><span class="o">=</span><span class="n">menu1</span><span class="p">)</span>

<span class="n">menu2</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">menubar</span><span class="p">,</span> <span class="n">tearoff</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">menu2</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Couper"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu2</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Copier"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menu2</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Coller"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menubar</span><span class="o">.</span><span class="n">add_cascade</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Editer"</span><span class="p">,</span> <span class="n">menu</span><span class="o">=</span><span class="n">menu2</span><span class="p">)</span>

<span class="n">menu3</span> <span class="o">=</span> <span class="n">Menu</span><span class="p">(</span><span class="n">menubar</span><span class="p">,</span> <span class="n">tearoff</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">menu3</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"A propos"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">alert</span><span class="p">)</span>
<span class="n">menubar</span><span class="o">.</span><span class="n">add_cascade</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">"Aide"</span><span class="p">,</span> <span class="n">menu</span><span class="o">=</span><span class="n">menu3</span><span class="p">)</span>

<span class="n">fenetre</span><span class="o">.</span><span class="n">config</span><span class="p">(</span><span class="n">menu</span><span class="o">=</span><span class="n">menubar</span><span class="p">)</span>

http://apprendre-python.com/images/tkinter-menu.png


Connaitre toutes les méthodes / options d'un widget

Pour cela il vous suffit d'exécuter la ligne suivante:

print dir(Button())

Les attributs standards

Il est possible de changer la valeur d'attributs présents sur les widgets

Placer des widgets

Il est possible de placer les widgets à l'aide du paramètre side  :

<span class="n">side</span><span class="o">=</span><span class="n">TOP</span>     <span class="p">:</span>  <span class="n">haut</span>
<span class="n">side</span><span class="o">=</span><span class="n">LEFT</span>    <span class="p">:</span>  <span class="n">gauche</span>
<span class="n">side</span><span class="o">=</span><span class="n">BOTTOM</span>  <span class="p">:</span>  <span class="n">bas</span>
<span class="n">side</span><span class="o">=</span><span class="n">RIGHT</span>   <span class="p">:</span>  <span class="n">droite</span>

Exemple:

<span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'ivory'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">TOP</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 1'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 2'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">RIGHT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>

http://apprendre-python.com/images/tkinter-side.png

Autre exemple:

<span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s1">'ivory'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">LEFT</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 1'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">TOP</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s1">'Bouton 2'</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="n">BOTTOM</span><span class="p">,</span> <span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>

http://apprendre-python.com/images/tkinter-side-bottom.png

Les unités de dimensions

Si vous indiquez une dimension à travers un integer, l'unité utilisée sera les "pixels". Il est cependant possible de changer l'unité:

i : pouces
m : millimètre
c : centimètre

Les options de dimensions

'''height'''             : Hauteur du widget.
'''width'''              : Largeur du widget.
'''padx, pady'''         : Espace supplémentaire autour du widget. X pour horizontal et V pour vertical.
'''borderwidth'''        : Taille de la bordure.
'''highlightthickness''' : Largeur du rectangle lorsque le widget a le focus.
'''selectborderwidth'''  : Largeur de la bordure tridimensionnel autour du widget sélectionné.
'''wraplength'''         : Nombre de ligne maximum pour les widget en mode "word wrapping".

Les options de couleurs

Il est possible d'indiquer une valeur de couleur par son nom en anglais: "white", "black", "red", "yellow", etc. ou par son code hexadécimale: #000000, #00FFFF, etc.

'''background (ou bg)'''   : couleur de fond du widget.
'''foreground (ou fg)'''   : couleur de premier plan du widget.
'''activebackground'''     : couleur de fond du widget lorsque celui-ci est actif. 
'''activeForeground'''     : couleur de premier plan du widget lorsque le widget est actif. 
'''disabledForeground'''   : couleur de premier plan du widget lorsque le widget est désactivé. 
'''highlightbackground'''  : Couleur de fond de la région de surbrillance lorsque le widget a le focus. 
'''highlightcolor'''       : couleur de premier plan de la région en surbrillance lorsque le widget a le focus. 
'''selectbackground'''     : Couleur de fond pour les éléments sélectionnés. 
'''selectforeground'''     : couleur de premier plan pour les éléments sélectionnés.

Le curseur

Vous pouvez changer l'apparance de votre curseur:

<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"arrow"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"arrow"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"circle"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"circle"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"clock"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"clock"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"cross"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"cross"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"dotbox"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"dotbox"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"exchange"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"exchange"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"fleur"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"fleur"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"heart"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"heart"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"man"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"man"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"mouse"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"mouse"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"pirate"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"pirate"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"plus"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"plus"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"shuttle"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"shuttle"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"sizing"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"sizing"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"spider"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"spider"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"spraycan"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"spraycan"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"star"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"star"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"target"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"target"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"tcross"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"tcross"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"trek"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"trek"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"watch"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">,</span> <span class="n">cursor</span><span class="o">=</span><span class="s2">"watch"</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

Le relief

Vous pouvez changer le relief sur vos éléments:

<span class="n">FLAT</span>
<span class="n">RAISED</span>
<span class="n">SUNKEN</span>
<span class="n">GROOVE</span>
<span class="n">RIDGE</span>
<span class="n">b1</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"FLAT"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">FLAT</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b2</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"RAISED"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RAISED</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b3</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"SUNKEN"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">SUNKEN</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b4</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"GROOVE"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">GROOVE</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
<span class="n">b5</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span><span class="s2">"RIDGE"</span><span class="p">,</span> <span class="n">relief</span><span class="o">=</span><span class="n">RIDGE</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-relief.png

La grille

Il est possible de placer les éléments en raisonnant en grille:

<span class="k">for</span> <span class="n">ligne</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">colonne</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
        <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L</span><span class="si">%s</span><span class="s1">-C</span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">ligne</span><span class="p">,</span> <span class="n">colonne</span><span class="p">),</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="n">ligne</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="n">colonne</span><span class="p">)</span>

http://apprendre-python.com/images/tkinter-grid.png

<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L1-C1'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L1-C2'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L2-C3'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L2-C4'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
<span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s1">'L3-C3'</span><span class="p">,</span> <span class="n">borderwidth</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">row</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">column</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>

http://apprendre-python.com/images/tkinter-grid-2.png

Intégrer une image

Pour intégrer une image vous pouvez créer un canevas et l'ajouter à l'intérieur comme ceci:

<span class="n">photo</span> <span class="o">=</span> <span class="n">PhotoImage</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="s2">"ma_photo.png"</span><span class="p">)</span>

<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">350</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">200</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">create_image</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">NW</span><span class="p">,</span> <span class="n">image</span><span class="o">=</span><span class="n">photo</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-image.png

Récupérer la valeur d'un input

Pour récupérer la valeur d'un input il vous faudra utiliser la méthode get()  :

<span class="k">def</span> <span class="nf">recupere</span><span class="p">():</span>
    <span class="n">showinfo</span><span class="p">(</span><span class="s2">"Alerte"</span><span class="p">,</span> <span class="n">entree</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>

<span class="n">value</span> <span class="o">=</span> <span class="n">StringVar</span><span class="p">()</span> 
<span class="n">value</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"Valeur"</span><span class="p">)</span>
<span class="n">entree</span> <span class="o">=</span> <span class="n">Entry</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">textvariable</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
<span class="n">entree</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

<span class="n">bouton</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"Valider"</span><span class="p">,</span> <span class="n">command</span><span class="o">=</span><span class="n">recupere</span><span class="p">)</span>
<span class="n">bouton</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

Récupérer une image et l'afficher

Pour cela, vous devez importer le module suivant:

<span class="kn">from</span> <span class="nn">tkinter.filedialog</span> <span class="kn">import</span> <span class="o">*</span>
<span class="n">filepath</span> <span class="o">=</span> <span class="n">askopenfilename</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">"Ouvrir une image"</span><span class="p">,</span><span class="n">filetypes</span><span class="o">=</span><span class="p">[(</span><span class="s1">'png files'</span><span class="p">,</span><span class="s1">'.png'</span><span class="p">),(</span><span class="s1">'all files'</span><span class="p">,</span><span class="s1">'.*'</span><span class="p">)])</span>
<span class="n">photo</span> <span class="o">=</span> <span class="n">PhotoImage</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="n">filepath</span><span class="p">)</span>
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">photo</span><span class="o">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">height</span><span class="o">=</span><span class="n">photo</span><span class="o">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"yellow"</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">create_image</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">anchor</span><span class="o">=</span><span class="n">NW</span><span class="p">,</span> <span class="n">image</span><span class="o">=</span><span class="n">photo</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

http://apprendre-python.com/images/tkinter-open-file.png

La fonction askopenfilename retourne le chemin du fichier que vous avez choisi avec le nom de celui-ci.

Exemple: /home/olivier/ma_photo.png

Récupérer un fichier texte et l'afficher

<span class="n">filename</span> <span class="o">=</span> <span class="n">askopenfilename</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s2">"Ouvrir votre document"</span><span class="p">,</span><span class="n">filetypes</span><span class="o">=</span><span class="p">[(</span><span class="s1">'txt files'</span><span class="p">,</span><span class="s1">'.txt'</span><span class="p">),(</span><span class="s1">'all files'</span><span class="p">,</span><span class="s1">'.*'</span><span class="p">)])</span>
<span class="n">fichier</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span>
<span class="n">content</span> <span class="o">=</span> <span class="n">fichier</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="n">fichier</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>

<span class="n">Label</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="n">content</span><span class="p">)</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">padx</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>

Les évènements

Vous pouvez récupérer les actions utilisateurs à travers les events (évènement en français).

Pour chaque widget, vous pouvez binder (lier en français) un évènement, par exemple dire lorsque l'utilisateur appuie sur telle touche, faire cela.

Voici un exemple qui récupère les touches appuyées par l'utilisateur:

<span class="k">def</span> <span class="nf">clavier</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
    <span class="n">touche</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">keysym</span>
    <span class="k">print</span><span class="p">(</span><span class="n">touche</span><span class="p">)</span>

<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">500</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">focus_set</span><span class="p">()</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s2">"<Key>"</span><span class="p">,</span> <span class="n">clavier</span><span class="p">)</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>

On remarque que l' évènement est encadré par des chevrons .

D'autres évènements existent:

<Button-1>           : Click gauche
<Button-2>           : Click milieu 
<Button-3>           : Click droit
<Double-Button-1>    : Double click droit
<Double-Button-2>    : Double click gauche
<KeyPress>           : Pression sur une touche
<KeyPress-a>         : Pression sur la touche '''A''' (minuscule)
<KeyPress-A>         : Pression sur la touche '''A''' (majuscule)
<Return>             : Pression sur la touche entrée
<Escape>             : Touche Echap
<Up>                 : Pression sur la flèche directionnelle haut
<Down>               : Pression sur la flèche directionnelle bas
<ButtonRelease>      : Lorsque qu'on relache le click
<Motion>             : Mouvement de la souris
<B1-Motion>          : Mouvement de la souris avec click gauche
<Enter>              : Entrée du curseur dans un widget
<Leave>              : Sortie du curseur dans un widget
<Configure>          : Redimensionnement de la fenêtre
<Map> <Unmap>        : Ouverture et iconification de la fenêtre
<MouseWheel>         : Utilisation de la roulette

Pour supprimer la liasion de l'évènement vous pouvez utiliser les méthodes unbind ou unbind_all .

Voici un exemple où l'on peut bouger un carré avec les touches directionnelles:

<span class="c1"># fonction appellée lorsque l'utilisateur presse une touche</span>
<span class="k">def</span> <span class="nf">clavier</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
    <span class="k">global</span> <span class="n">coords</span>

    <span class="n">touche</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">keysym</span>

    <span class="k">if</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Up"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">10</span><span class="p">)</span>
    <span class="k">elif</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Down"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
    <span class="k">elif</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Right"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">10</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
    <span class="k">elif</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Left"</span><span class="p">:</span>
        <span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span><span class="mi">10</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
    <span class="c1"># changement de coordonnées pour le rectangle</span>
    <span class="n">canvas</span><span class="o">.</span><span class="n">coords</span><span class="p">(</span><span class="n">rectangle</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">coords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="mi">25</span><span class="p">,</span> <span class="n">coords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">25</span><span class="p">)</span>

<span class="c1"># création du canvas</span>
<span class="n">canvas</span> <span class="o">=</span> <span class="n">Canvas</span><span class="p">(</span><span class="n">fenetre</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">250</span><span class="p">,</span> <span class="n">bg</span><span class="o">=</span><span class="s2">"ivory"</span><span class="p">)</span>
<span class="c1"># coordonnées initiales</span>
<span class="n">coords</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="c1"># création du rectangle</span>
<span class="n">rectangle</span> <span class="o">=</span> <span class="n">canvas</span><span class="o">.</span><span class="n">create_rectangle</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="n">fill</span><span class="o">=</span><span class="s2">"violet"</span><span class="p">)</span>
<span class="c1"># ajout du bond sur les touches du clavier</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">focus_set</span><span class="p">()</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s2">"<Key>"</span><span class="p">,</span> <span class="n">clavier</span><span class="p">)</span>
<span class="c1"># création du canvas</span>
<span class="n">canvas</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>