|
|
(13 versions intermédiaires par la même utilisatrice non affichées) |
Ligne 1 : |
Ligne 1 : |
| | [[Category:prog]] |
| | [[Category:python]] |
| | = Python : Tkinter = |
|
| |
|
| = Python : Tkinter =
| | cf : [http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel]<br/> |
|
| |
|
| | | |
|
| |
|
| Ce qui va suivre est entièrement issu de [http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel]
| | == Script 1 : Une mise en oeuvre brouillonne == |
|
| |
|
| Je ne l'ai mis ici que pour référence rapide
| | Un script qui met en oeuvre la plupart des commandes vues dans le tuto. Le résultat est très bizarre, mais l'important c'est que ça fonctionne :D |
| | <div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px"> |
| | <span style="color:#cc7832">from </span>tkinter <span style="color:#cc7832">import </span>*<br/> <span style="color:#cc7832">from </span>tkinter.messagebox <span style="color:#cc7832">import </span>*<br/> <span style="color:#cc7832">from </span>tkinter.filedialog <span style="color:#cc7832">import </span>* |
|
| |
|
|
| | <span style="color:#808080"># -*- coding: latin-9 -*-</span> |
|
| |
|
| == Python 2, python 3 == | | fenetre = Tk() |
|
| |
|
| 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:
| | fenetre[<span style="color:#6a8759">'bg'</span>]=<span style="color:#6a8759">'white'</span><br/> <br/> <span style="color:#808080"># frames</span><br/> <br/> Frame1 = Frame(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">borderwidth </span>= <span style="color:#6897bb">2</span><span style="color:#cc7832">, </span><span style="color:#aa4926">relief </span>= GROOVE)<br/> Frame1.pack(<span style="color:#aa4926">side</span>=LEFT<span style="color:#cc7832">, </span><span style="color:#aa4926">padx</span>=<span style="color:#6897bb">10</span><span style="color:#cc7832">, </span><span style="color:#aa4926">pady</span>=<span style="color:#6897bb">30</span>) |
| <pre>ImportError: No module named 'Tkinter' | |
| </pre> | |
|
| |
|
| C'est que le module appelé n'est pas le bon par rapport à votre version python.
| | Frame2 = Frame(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">borderwidth </span>= <span style="color:#6897bb">2</span><span style="color:#cc7832">, </span><span style="color:#aa4926">relief </span>= GROOVE)<br/> Frame2.pack(<span style="color:#aa4926">side</span>=RIGHT<span style="color:#cc7832">, </span><span style="color:#aa4926">padx</span>=<span style="color:#6897bb">10</span><span style="color:#cc7832">, </span><span style="color:#aa4926">pady</span>=<span style="color:#6897bb">30</span>) |
| <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> | |
|
| |
|
| == Hello world == | | Frame3 = Frame(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">borderwidth </span>= <span style="color:#6897bb">2</span><span style="color:#cc7832">, </span><span style="color:#aa4926">relief </span>= GROOVE)<br/> Frame3.pack(<span style="color:#aa4926">side </span>= BOTTOM<span style="color:#cc7832">, </span><span style="color:#aa4926">padx</span>=<span style="color:#6897bb">10</span><span style="color:#cc7832">, </span><span style="color:#aa4926">pady </span>= <span style="color:#6897bb">30</span>) |
|
| |
|
| Voici le code de votre premier '''hello world'''
| | <span style="color:#808080">#ajout d'un bouton</span><br/> <br/> bouton = Checkbutton(Frame1<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=<span style="color:#6a8759">"Cocher si vous êtes heureux."</span>)<br/> bouton.pack() |
| <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> | |
|
| |
|
| <span class="n">fenetre</span> <span class="o">=</span> <span class="n">Tk</span><span class="p">()</span> | | <span style="color:#808080">#Ajout d'une liste</span><br/> <br/> liste=Listbox(Frame2)<br/> liste.insert(<span style="color:#6897bb">1</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Bière"</span>)<br/> liste.insert(<span style="color:#6897bb">2</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Jus d'orange"</span>)<br/> liste.insert(<span style="color:#6897bb">3</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Lait"</span>)<br/> liste.pack() |
|
| |
|
| <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 style="color:#808080">#Ajout d'un canevas</span><br/> <br/> canevas = Canvas(Frame3<span style="color:#cc7832">, </span><span style="color:#aa4926">width </span>= <span style="color:#6897bb">150</span><span style="color:#cc7832">, </span><span style="color:#aa4926">height </span>= <span style="color:#6897bb">120</span><span style="color:#cc7832">, </span><span style="color:#aa4926">background</span>=<span style="color:#6a8759">"pink"</span>)<br/> cercle = canevas.create_oval(<span style="color:#6897bb">50</span><span style="color:#cc7832">, </span><span style="color:#6897bb">100</span><span style="color:#cc7832">, </span><span style="color:#6897bb">150</span><span style="color:#cc7832">, </span><span style="color:#6897bb">50</span>)<br/> canevas.pack(<span style="color:#aa4926">side</span>=LEFT) |
| <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> | | <span style="color:#808080">#Ajout de labelframe</span><br/> <br/> Labelframe = LabelFrame(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=<span style="color:#6a8759">"Quel est ton pourcentage de bonheur?"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">padx</span>=<span style="color:#6897bb">20</span><span style="color:#cc7832">, </span><span style="color:#aa4926">pady</span>=<span style="color:#6897bb">20</span>)<br/> Labelframe.pack(<span style="color:#aa4926">fill</span>=<span style="color:#6a8759">"both"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">expand</span>=<span style="color:#6a8759">"yes"</span>) |
| </pre> | |
|
| |
|
| Une fenêtre comme celle-ci devrait apparaître:
| | <span style="color:#808080">#Ajout d'une spinbox</span><br/> s = Spinbox(Labelframe<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=<span style="color:#6a8759">"A combien tu est mon amie?"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">from_</span>=<span style="color:#6897bb">0</span><span style="color:#cc7832">, </span><span style="color:#aa4926">to_</span>=<span style="color:#6897bb">100</span>)<br/> s.pack() |
|
| |
|
| http://apprendre-python.com/images/hello-world.png
| | <span style="color:#808080">#Ajout d'une alerte sur un bouton</span><br/> <br/> <span style="color:#cc7832">def </span><span style="color:#ffc66d">bouh</span>():<br/> <span style="color:#cc7832">if </span>askyesno(<span style="color:#6a8759">"Attention"</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Cliquez ici"</span>):<br/> showwarning(<span style="color:#6a8759">"BOUH!"</span>) |
|
| |
|
| == Les widget Tkinter == | | <span style="color:#cc7832">else</span>:<br/> showinfo(<span style="color:#6a8759">"Allez..."</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Allez, clique!"</span>) |
|
| |
|
| 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.
| | bouton2 = Button(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=<span style="color:#6a8759">"Clique Ici"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">command</span>=bouh)<br/> bouton2.pack() |
|
| |
|
| == Les boutons == | | <span style="color:#808080">#Ajout d'une barre de menu</span><br/> <br/> <span style="color:#cc7832">def </span><span style="color:#ffc66d">alert</span>():<br/> showinfo(<span style="color:#6a8759">"OUAF"</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"OUAF"</span>) |
|
| |
|
| Les boutons permettent de proposer une action à l'utilisateur. Dans l'exemple ci-dessous, on lui propose de fermer la fenêtre.
| | <span style="color:#cc7832">def </span><span style="color:#ffc66d">miaou</span>():<br/> showinfo(<span style="color:#6a8759">"MIAOU"</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"MIAOU"</span>) |
| <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>
| |
|
| |
|
| http://apprendre-python.com/images/tkinter-button.png
| | <span style="color:#cc7832">def </span><span style="color:#ffc66d">ouvreImage</span>():<br/> <span style="color:#808080"># récupération et affichage d'image</span><br/> <br/> <span style="color:#808080"> </span>filepath = askopenfilename(<span style="color:#aa4926">title</span>=<span style="color:#6a8759">"Ouvrir une image PNG"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">filetypes</span>=[(<span style="color:#6a8759">'png files'</span><span style="color:#cc7832">, </span><span style="color:#6a8759">'.png'</span>)<span style="color:#cc7832">, </span>(<span style="color:#6a8759">'all files'</span><span style="color:#cc7832">, </span><span style="color:#6a8759">'.*'</span>)])<br/> photo2 = PhotoImage(<span style="color:#aa4926">file</span>=filepath)<br/> canvas3 = Canvas(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">width</span>=photo2.width()<span style="color:#cc7832">, </span><span style="color:#aa4926">height</span>=photo2.height())<br/> canvas3.create_image(<span style="color:#6897bb">0</span><span style="color:#cc7832">, </span><span style="color:#6897bb">0</span><span style="color:#cc7832">, </span><span style="color:#aa4926">anchor</span>=NW<span style="color:#cc7832">, </span><span style="color:#aa4926">image</span>=photo2)<br/> canvas3.pack() |
|
| |
|
| == Les labels == | | <span style="color:#cc7832">def </span><span style="color:#ffc66d">ouvreTexte</span>():<br/> <span style="color:#808080"># Récupération et affichage de txt</span><br/> <span style="color:#808080"> </span>filename = askopenfilename(<span style="color:#aa4926">title</span>=<span style="color:#6a8759">"Ouvrir votre document"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">filetypes</span>=[(<span style="color:#6a8759">'txt files'</span><span style="color:#cc7832">, </span><span style="color:#6a8759">'.txt'</span>)<span style="color:#cc7832">, </span>(<span style="color:#6a8759">'all files'</span><span style="color:#cc7832">, </span><span style="color:#6a8759">'.*'</span>)])<br/> fichier = <span style="color:#8888c6">open</span>(filename<span style="color:#cc7832">, </span><span style="color:#6a8759">"r"</span>)<br/> content = fichier.read()<br/> fichier.close() |
|
| |
|
| Les labels sont des espaces prévus pour écrire du texte. Les labels servent souvent à décrire un widget comme un input
| | Label(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=content).pack(<span style="color:#aa4926">padx</span>=<span style="color:#6897bb">10</span><span style="color:#cc7832">, </span><span style="color:#aa4926">pady</span>=<span style="color:#6897bb">10</span>) |
| <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>
| |
|
| |
|
| http://apprendre-python.com/images/tkinter-label.png
| | menubar = Menu(fenetre) |
|
| |
|
| == Entrée / input == | | menu1 = Menu(menubar<span style="color:#cc7832">, </span><span style="color:#aa4926">tearoff</span>=<span style="color:#6897bb">0</span>)<br/> menu1.add_command(<span style="color:#aa4926">label</span>=<span style="color:#6a8759">"Chien"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">command</span>=alert)<br/> menu1.add_separator()<br/> menu1.add_command(<span style="color:#aa4926">label</span>=<span style="color:#6a8759">"Quitter"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">command</span>=fenetre.quit)<br/> menubar.add_cascade(<span style="color:#aa4926">label</span>=<span style="color:#6a8759">"Canidé"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">menu</span>=menu1) |
| <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>
| |
|
| |
|
| http://apprendre-python.com/images/tkinter-input.png
| | menu2 = Menu(menubar<span style="color:#cc7832">, </span><span style="color:#aa4926">tearoff</span>=<span style="color:#6897bb">0</span>)<br/> menu2.add_command(<span style="color:#aa4926">label</span>=<span style="color:#6a8759">"Chat"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">command</span>=miaou)<br/> menubar.add_cascade(<span style="color:#aa4926">label</span>=<span style="color:#6a8759">"Félidés"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">menu</span>=menu2) |
|
| |
|
| == Case à cocher == | | menu3 = Menu(menubar<span style="color:#cc7832">, </span><span style="color:#aa4926">tearoff</span>=<span style="color:#6897bb">0</span>)<br/> menu3.add_command(<span style="color:#aa4926">label</span>=<span style="color:#6a8759">"Ouvrir un txt"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">command </span>= ouvreTexte)<br/> menubar.add_cascade(<span style="color:#aa4926">label</span>=<span style="color:#6a8759">"Ouvrir des fichiers"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">menu</span>=menu3) |
|
| |
|
| Les checkbox proposent à l'utilisateur de cocher une option.
| | fenetre.config(<span style="color:#aa4926">menu</span>=menubar) |
| <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>
| |
|
| |
|
| http://apprendre-python.com/images/tkinter-checkbox.png
| | <span style="color:#808080">#Ajout d'un bouton qui change le curseur</span><br/> <br/> Button(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=<span style="color:#6a8759">"croix"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">relief</span>=RAISED<span style="color:#cc7832">, </span><span style="color:#aa4926">cursor</span>=<span style="color:#6a8759">"pirate"</span>).pack(<span style="color:#aa4926">side</span>=LEFT) |
|
| |
|
| == Boutons radio == | | <span style="color:#808080">#Ajout d'une image</span><br/> photo = PhotoImage(<span style="color:#aa4926">file</span>=<span style="color:#6a8759">"squirrel.png"</span>) |
|
| |
|
| Les boutons radio sont des cases à cocher qui sont dans un groupe et dans ce groupe seul un élément peut être sélectionné.
| | canvas = Canvas(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">width </span>= <span style="color:#6897bb">350</span><span style="color:#cc7832">, </span><span style="color:#aa4926">height </span>= <span style="color:#6897bb">400</span>)<br/> canvas.create_image(<span style="color:#6897bb">0</span><span style="color:#cc7832">, </span><span style="color:#6897bb">0</span><span style="color:#cc7832">, </span><span style="color:#aa4926">anchor</span>=NW<span style="color:#cc7832">, </span><span style="color:#aa4926">image</span>=photo)<br/> canvas.pack() |
| <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>
| |
|
| |
|
| == Les listes == | | <span style="color:#808080">#Récupération d'input</span><br/> <span style="color:#cc7832">def </span><span style="color:#ffc66d">recup</span>():<br/> showinfo(<span style="color:#6a8759">"Alerte"</span><span style="color:#cc7832">, </span>entree.get()) |
|
| |
|
| Les listes permettent de récupérer une valeur sélectionnée par l'utilisateur.
| | value = StringVar()<br/> value.set(<span style="color:#6a8759">"Valeur"</span>)<br/> entree = Entry(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">textvariable</span>=value<span style="color:#cc7832">, </span><span style="color:#aa4926">width</span>=<span style="color:#6897bb">30</span>) |
|
| |
|
| http://apprendre-python.com/images/tkinter-list.png
| | bouton3 = Button(fenetre<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=<span style="color:#6a8759">"Valider"</span><span style="color:#cc7832">, </span><span style="color:#aa4926">command</span>=recup)<br/> bouton3.pack() |
| <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>
| |
|
| |
|
| <span class="n">liste</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
| | fenetre.mainloop() |
| </pre>
| | </div> |
| | Le fichier squirrel.png qui va avec: |
|
| |
|
| == Canvas ==
| | [[Media:Squirrel.png|Media:Squirrel.png]] |
|
| |
|
| 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>
| |
| | |
| http://apprendre-python.com/images/tkinter-canvas.png
| |
| | |
| 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>
| |
| | |
| 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)
| |
| </pre>
| |
| | |
| Pour supprimer un élément vous pouvez utiliser la méthode '''delete'''
| |
| <pre>canvas.delete(élément)
| |
| </pre>
| |
| | |
| 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>
| |
| | |
| ou visitez la page suivante [http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/canvas-methods.html infohost]
| |
| | |
| == Scale ==
| |
| | |
| 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>
| |
| | |
| http://apprendre-python.com/images/tkinter-scale.png
| |
| | |
| == Frames ==
| |
| | |
| 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>
| |
| | |
| <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>
| |
| </pre>
| |
| | |
| 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.
| |
| <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>
| |
| | |
| 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
| |
| <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>
| |
| | |
| http://apprendre-python.com/images/tkinter-spinbox.png
| |
| | |
| == LabelFrame ==
| |
| | |
| 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>
| |
| | |
| 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).
| |
| <pre><span class="kn">from</span> <span class="nn">tkMessageBox</span> <span class="kn">import</span> <span class="o">*</span>
| |
| </pre>
| |
| | |
| Pour python 3:
| |
| <pre>from tkinter.messagebox import *
| |
| </pre>
| |
| | |
| 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>
| |
| | |
| <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>
| |
| | |
| http://apprendre-python.com/images/tkinter-dialog.png
| |
| | |
| Voici les alertes possibles:
| |
| <pre>showinfo()
| |
| showwarning()
| |
| showerror()
| |
| askquestion()
| |
| askokcancel()
| |
| askyesno()
| |
| askretrycancel()
| |
| </pre>
| |
| | |
| == 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>
| |
| | |
| <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>
| |
| </pre>
| |
| | |
| 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:
| |
| <pre class="cdoe">print dir(Button())
| |
| </pre>
| |
| | |
| == 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 ''' :
| |
| <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:
| |
| <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>
| |
| | |
| http://apprendre-python.com/images/tkinter-side.png
| |
| | |
| 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>
| |
| | |
| 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é:
| |
| <pre>i : pouces
| |
| m : millimètre
| |
| c : centimètre
| |
| </pre>
| |
| | |
| == Les options de dimensions ==
| |
| <pre>'''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".
| |
| </pre>
| |
| | |
| == 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.
| |
| <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>
| |
| | |
| == Le 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>
| |
| | |
| == Le relief ==
| |
| | |
| 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>
| |
| | |
| http://apprendre-python.com/images/tkinter-relief.png
| |
| | |
| == La 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>
| |
| | |
| 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>
| |
| <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>
| |
|
| |
|
| 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:
| | == Script 2 : Un éditeur de texte == |
| <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>
| |
|
| |
|
| <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>
| | Un éditeur de texte tout simple, basé sur le widget Text de tkInter. |
| <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>
| |
|
| |
|
| http://apprendre-python.com/images/tkinter-image.png
| | La fonction recup est laissée pour expliquer le fonctionnement. |
| | <div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px"><pre>from tkinter import * |
| | from tkinter.messagebox import * |
| | from tkinter.filedialog import * |
|
| |
|
| == Récupérer la valeur d'un input ==
| | # -*- coding: latin-9 -*- |
|
| |
|
| Pour récupérer la valeur d'un input il vous faudra utiliser la méthode '''get() ''' :
| | #ELEMENTS GRAPHIQUES |
| <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>
| |
|
| |
|
| <span class="n">value</span> <span class="o">=</span> <span class="n">StringVar</span><span class="p">()</span>
| | window = Tk() |
| <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>
| | frame1 = Frame(window, borderwidth = 10, relief = GROOVE) |
| <span class="n">bouton</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
| | frame1.pack(side=LEFT, padx=10, pady=10) |
| </pre>
| |
|
| |
|
| == Récupérer une image et l'afficher == | | #On ajoute un widget Text, qui est une fenêtre d'édition de texte |
| | entree = Text(frame1, height=30, width=120, bg="#3f4754", fg="white") |
| | entree.pack() |
|
| |
|
| Pour cela, vous devez importer le module suivant:
| | ###FONCTIONS |
| <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>
| |
|
| |
|
| http://apprendre-python.com/images/tkinter-open-file.png
| | ###On fait une entrée et on récupère le texte |
| | ###Cette fonction génère une alerte, qui affiche le contenu de l'entree avec entree.get() |
| | #La fonction get d'une entree sert à récupérer le texte qu'elle contient |
| | #L'indice après le .get correspond à ligne.colonne : On prend tout de ligne0 colonne 0 à ligne50 colonne 50 |
|
| |
|
| La fonction '''askopenfilename ''' retourne le chemin du fichier que vous avez choisi avec le nom de celui-ci.
| | def recup(): |
| | showinfo("Alerte", entree.get(0.0, 50.50)) |
|
| |
|
| Exemple: '''/home/olivier/ma_photo.png'''
| | #Fonction qui récupère le texte et le met dans un fichier texte, ou crée le fichier |
|
| |
|
| == Récupérer un fichier texte et l'afficher ==
| | def recuptexte(): |
| <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>
| |
|
| |
|
| <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>
| | texteBrut = entree.get(0.0, END) |
| </pre>
| | filename = asksaveasfile(mode='w', defaultextension=".txt") |
| | filename.write(texteBrut) |
| | filename.close() |
|
| |
|
| == Les évènements == | | #Fonction qui ouvre un texte existant |
| | def ouvreTexte(): |
| | file = askopenfile(mode='r', defaultextension=".txt") |
| | entree.delete(0.0, END) |
| | entree.insert(0.0, file.read()) |
|
| |
|
| Vous pouvez récupérer les actions utilisateurs à travers les '''events ''' (évènement en français).
| | #Fonction qui insère un texte en fin de fichier |
| | def insereTexte(): |
| | file = askopenfile(mode='r', defaultextension=".txt") |
| | entree.insert(END, file.read()) |
|
| |
|
| 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.
| | #affiche une fenêtre avec le nom de la créatrice |
|
| |
|
| Voici un exemple qui récupère les touches appuyées par l'utilisateur:
| | def credits(): |
| <pre><span class="k">def</span> <span class="nf">clavier</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
| | aPropos = Tk() |
| <span class="n">touche</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">keysym</span> | | label = Label(aPropos, text="Par Justine\nVive les écureuils!", bg="pink") |
| <span class="k">print</span><span class="p">(</span><span class="n">touche</span><span class="p">)</span> | | label.pack() |
| | aPropos.mainloop() |
|
| |
|
| <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>
| |
| </pre>
| |
|
| |
|
| On remarque que l' <u>évènement est encadré par des chevrons </u> .
| | #Barre de menu |
|
| |
|
| D'autres évènements existent:
| | menubar = Menu(window) |
| <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>
| |
|
| |
|
| Pour supprimer la liasion de l'évènement vous pouvez utiliser les méthodes '''unbind ''' ou '''unbind_all ''' .
| | menu1 = Menu(menubar, tearoff=0) |
| | menu1.add_command(label="Enregistrer", command=recuptexte) |
| | menubar.add_cascade(label="Enregistrer", menu=menu1) |
|
| |
|
| Voici un exemple où l'on peut bouger un carré avec les touches directionnelles:
| | menu2 = Menu(menubar, tearoff=0) |
| <pre><span class="c1"># fonction appellée lorsque l'utilisateur presse une touche</span>
| | menu2.add_command(label="Ouvrir un txt", command = ouvreTexte) |
| <span class="k">def</span> <span class="nf">clavier</span><span class="p">(</span><span class="n">event</span><span class="p">):</span>
| | menu2.add_separator() |
| <span class="k">global</span> <span class="n">coords</span>
| | menu2.add_command(label="Insérer un fichier", command = insereTexte) |
| | menubar.add_cascade(label="Ouvrir...", menu=menu2) |
|
| |
|
| <span class="n">touche</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">keysym</span>
| | menu3 = Menu(menubar, tearoff=0) |
| | menu3.add_command(label="Quitter", command = window.quit) |
| | menubar.add_cascade(label="Quitter", menu=menu3) |
|
| |
|
| <span class="k">if</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Up"</span><span class="p">:</span>
| | menu4 = Menu(menubar, tearoff = 0) |
| <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>
| | menu4.add_command(label="À propos", command = credits) |
| <span class="k">elif</span> <span class="n">touche</span> <span class="o">==</span> <span class="s2">"Down"</span><span class="p">:</span>
| | menubar.add_cascade(label="À propos", menu=menu4) |
| <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>
| | window.config(menu=menubar)</pre> |
| <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>
| | </div> |
| <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>
| |
| </pre>
| |