« 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
 
(4 versions intermédiaires par la même utilisatrice non affichées)
Ligne 1 : Ligne 1 :
[[Category:prog]]
[[Category:python]]
= Python : Tkinter =


&nbsp; cf&nbsp;: [http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel]<br/> &nbsp;


= Python : Tkinter =
&nbsp;


&nbsp; cf : [http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel]<br/> &nbsp;
== Script 1 : Une mise en oeuvre brouillonne ==
 
== Script 1 ==


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&nbsp;:D
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&nbsp;:D
<div style="background:#eeeeee;  border:1px solid #cccccc;  padding:5px 10px"><pre style="background-color:#2b2b2b; color:#a9b7c6; font-family:'DejaVu Sans Mono'; font-size:9,0pt"><span style="color:#cc7832">from </span>tkinter <span style="color:#cc7832">import </span>*
<div style="background:#eeeeee;  border:1px solid #cccccc;  padding:5px 10px">
<span style="color:#cc7832">from </span>tkinter.messagebox <span style="color:#cc7832">import </span>*
<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:#cc7832">from </span>tkinter.filedialog <span style="color:#cc7832">import </span>*


<span style="color:#808080"># -*- coding: latin-9 -*-
<span style="color:#808080"># -*- coding: latin-9 -*-</span>
</span>


fenetre = Tk()
fenetre = Tk()


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>)
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>)
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>)
<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()
<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 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 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>)
<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()
<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/> &nbsp;&nbsp;&nbsp; <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/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showwarning(<span style="color:#6a8759">"BOUH!"</span>)
&nbsp;&nbsp;&nbsp; <span style="color:#cc7832">else</span>:<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showinfo(<span style="color:#6a8759">"Allez..."</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Allez, clique!"</span>)
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()
<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/> &nbsp;&nbsp;&nbsp; showinfo(<span style="color:#6a8759">"OUAF"</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"OUAF"</span>)
<span style="color:#cc7832">def </span><span style="color:#ffc66d">miaou</span>():<br/> &nbsp;&nbsp;&nbsp; showinfo(<span style="color:#6a8759">"MIAOU"</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"MIAOU"</span>)
<span style="color:#cc7832">def </span><span style="color:#ffc66d">ouvreImage</span>():<br/> &nbsp;&nbsp;&nbsp; <span style="color:#808080"># récupération et affichage d'image</span><br/> <br/> <span style="color:#808080">&nbsp;&nbsp;&nbsp; </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/> &nbsp;&nbsp;&nbsp; photo2 = PhotoImage(<span style="color:#aa4926">file</span>=filepath)<br/> &nbsp;&nbsp;&nbsp; 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/> &nbsp;&nbsp;&nbsp; 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/> &nbsp;&nbsp;&nbsp; canvas3.pack()
<span style="color:#cc7832">def </span><span style="color:#ffc66d">ouvreTexte</span>():<br/> &nbsp;&nbsp;&nbsp; <span style="color:#808080"># Récupération et affichage de txt</span><br/> <span style="color:#808080">&nbsp;&nbsp;&nbsp; </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/> &nbsp;&nbsp;&nbsp; fichier = <span style="color:#8888c6">open</span>(filename<span style="color:#cc7832">, </span><span style="color:#6a8759">"r"</span>)<br/> &nbsp;&nbsp;&nbsp; content = fichier.read()<br/> &nbsp;&nbsp;&nbsp; fichier.close()
&nbsp;&nbsp;&nbsp; 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>)
menubar = Menu(fenetre)


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)


fenetre[<span style="color:#6a8759">'bg'</span>]=<span style="color:#6a8759">'white'
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)
</span>
<span style="color:#808080"># frames
</span>
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)
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>)


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)
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)
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>)


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)
fenetre.config(<span style="color:#aa4926">menu</span>=menubar)
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>)


<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)


<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>)


<span style="color:#808080">#ajout d'un bouton
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()
</span>
bouton = Checkbutton(Frame1<span style="color:#cc7832">, </span><span style="color:#aa4926">text</span>=<span style="color:#6a8759">"Cocher si vous êtes heureux."</span>)
bouton.pack()


<span style="color:#808080">#Ajout d'une liste
<span style="color:#808080">#Récupération d'input</span><br/> <span style="color:#cc7832">def </span><span style="color:#ffc66d">recup</span>():<br/> &nbsp;&nbsp;&nbsp; showinfo(<span style="color:#6a8759">"Alerte"</span><span style="color:#cc7832">, </span>entree.get())
</span>
liste=Listbox(Frame2)
liste.insert(<span style="color:#6897bb">1</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Bière"</span>)
liste.insert(<span style="color:#6897bb">2</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Jus d'orange"</span>)
liste.insert(<span style="color:#6897bb">3</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Lait"</span>)
liste.pack()


<span style="color:#808080">#Ajout d'un canevas
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>)
</span>
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>)
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>)
canevas.pack(<span style="color:#aa4926">side</span>=LEFT)


<span style="color:#808080">#Ajout de labelframe
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()
</span>
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>)
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>)


<span style="color:#808080">#Ajout d'une spinbox
fenetre.mainloop()
</span>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>)
</div>  
s.pack()
Le fichier squirrel.png qui va avec:


<span style="color:#808080">#Ajout d'une alerte sur un bouton
[[Media:Squirrel.png|Media:Squirrel.png]]
</span>
<span style="color:#cc7832">def </span><span style="color:#ffc66d">bouh</span>():
    <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>):
        showwarning(<span style="color:#6a8759">"BOUH!"</span>)


    <span style="color:#cc7832">else</span>:
&nbsp;
        showinfo(<span style="color:#6a8759">"Allez..."</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"Allez, clique!"</span>)


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)
bouton2.pack()




<span style="color:#808080">#Ajout d'une barre de menu
== Script 2&nbsp;: Un éditeur de texte ==
</span>
<span style="color:#cc7832">def </span><span style="color:#ffc66d">alert</span>():
    showinfo(<span style="color:#6a8759">"OUAF"</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"OUAF"</span>)


<span style="color:#cc7832">def </span><span style="color:#ffc66d">miaou</span>():
Un éditeur de texte tout simple, basé sur le widget Text de tkInter.
    showinfo(<span style="color:#6a8759">"MIAOU"</span><span style="color:#cc7832">, </span><span style="color:#6a8759">"MIAOU"</span>)


<span style="color:#cc7832">def </span><span style="color:#ffc66d">ouvreImage</span>():
La fonction recup est laissée pour expliquer le fonctionnement.
    <span style="color:#808080"># récupération et affichage d'image
<div style="background:#eeeeee;  border:1px solid #cccccc;  padding:5px 10px"><pre>from tkinter import *
</span>
from tkinter.messagebox import *
<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>)])
from tkinter.filedialog import *
    photo2 = PhotoImage(<span style="color:#aa4926">file</span>=filepath)
    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())
    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)
    canvas3.pack()


<span style="color:#cc7832">def </span><span style="color:#ffc66d">ouvreTexte</span>():
# -*- coding: latin-9 -*-
    <span style="color:#808080"># Récupération et affichage de txt
</span><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>)])
    fichier = <span style="color:#8888c6">open</span>(filename<span style="color:#cc7832">, </span><span style="color:#6a8759">"r"</span>)
    content = fichier.read()
    fichier.close()


    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>)
#ELEMENTS GRAPHIQUES


menubar = Menu(fenetre)
window = Tk()
 
frame1 = Frame(window, borderwidth = 10, relief = GROOVE)
frame1.pack(side=LEFT, padx=10, pady=10)
 
#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()
 
###FONCTIONS
 
###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&nbsp;: On prend tout de ligne0 colonne 0 à ligne50 colonne 50
 
def recup():
    showinfo("Alerte", entree.get(0.0, 50.50))
 
#Fonction qui récupère le texte et le met dans un fichier texte, ou crée le fichier
 
def recuptexte():


menu1 = Menu(menubar<span style="color:#cc7832">, </span><span style="color:#aa4926">tearoff</span>=<span style="color:#6897bb">0</span>)
    texteBrut = entree.get(0.0, END)
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)
    filename = asksaveasfile(mode='w', defaultextension=".txt")
menu1.add_separator()
    filename.write(texteBrut)
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)
    filename.close()
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)


menu2 = Menu(menubar<span style="color:#cc7832">, </span><span style="color:#aa4926">tearoff</span>=<span style="color:#6897bb">0</span>)
#Fonction qui ouvre un texte existant
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)
def ouvreTexte():
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)
    file = askopenfile(mode='r', defaultextension=".txt")
    entree.delete(0.0, END)
    entree.insert(0.0, file.read())


menu3 = Menu(menubar<span style="color:#cc7832">, </span><span style="color:#aa4926">tearoff</span>=<span style="color:#6897bb">0</span>)
#Fonction qui insère un texte en fin de fichier
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)
def insereTexte():
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)
    file = askopenfile(mode='r', defaultextension=".txt")
    entree.insert(END, file.read())


fenetre.config(<span style="color:#aa4926">menu</span>=menubar)
#affiche une fenêtre avec le nom de la créatrice


<span style="color:#808080">#Ajout d'un bouton qui change le curseur
def credits():
</span>
    aPropos = Tk()
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)
    label = Label(aPropos, text="Par Justine\nVive les écureuils!", bg="pink")
    label.pack()
    aPropos.mainloop()


<span style="color:#808080">#Ajout d'une image
</span>photo = PhotoImage(<span style="color:#aa4926">file</span>=<span style="color:#6a8759">"squirrel.png"</span>)


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>)
#Barre de menu
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)
canvas.pack()


menubar = Menu(window)


<span style="color:#808080">#Récupération d'input
menu1 = Menu(menubar, tearoff=0)
</span><span style="color:#cc7832">def </span><span style="color:#ffc66d">recup</span>():
menu1.add_command(label="Enregistrer", command=recuptexte)
    showinfo(<span style="color:#6a8759">"Alerte"</span><span style="color:#cc7832">, </span>entree.get())
menubar.add_cascade(label="Enregistrer", menu=menu1)


value = StringVar()
menu2 = Menu(menubar, tearoff=0)
value.set(<span style="color:#6a8759">"Valeur"</span>)
menu2.add_command(label="Ouvrir un txt", command = ouvreTexte)
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>)
menu2.add_separator()
menu2.add_command(label="Insérer un fichier", command = insereTexte)
menubar.add_cascade(label="Ouvrir...", menu=menu2)


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)
menu3 = Menu(menubar, tearoff=0)
bouton3.pack()
menu3.add_command(label="Quitter", command = window.quit)
menubar.add_cascade(label="Quitter", menu=menu3)


fenetre.mainloop()
menu4 = Menu(menubar, tearoff = 0)
</pre>
menu4.add_command(label="À propos", command = credits)
</div>
menubar.add_cascade(label="À propos", menu=menu4)
Le fichier squirrel.png qui va avec:


[[:Media:Squirrel.png|Media:Squirrel.png]]
window.config(menu=menubar)</pre>
</div>

Dernière version du 22 juin 2022 à 12:08

Python : Tkinter

  cf : http://apprendre-python.com/page-tkinter-interface-graphique-python-tutoriel
 

 

Script 1 : Une mise en oeuvre brouillonne

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

from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *

# -*- coding: latin-9 -*-

fenetre = Tk()

fenetre['bg']='white'

# frames

Frame1 = Frame(fenetre, borderwidth = 2, relief = GROOVE)
Frame1.pack(side=LEFT, padx=10, pady=30)

Frame2 = Frame(fenetre, borderwidth = 2, relief = GROOVE)
Frame2.pack(side=RIGHT, padx=10, pady=30)

Frame3 = Frame(fenetre, borderwidth = 2, relief = GROOVE)
Frame3.pack(side = BOTTOM, padx=10, pady = 30)

#ajout d'un bouton

bouton = Checkbutton(Frame1, text="Cocher si vous êtes heureux.")
bouton.pack()

#Ajout d'une liste

liste=Listbox(Frame2)
liste.insert(1, "Bière")
liste.insert(2, "Jus d'orange")
liste.insert(3, "Lait")
liste.pack()

#Ajout d'un canevas

canevas = Canvas(Frame3, width = 150, height = 120, background="pink")
cercle = canevas.create_oval(50, 100, 150, 50)
canevas.pack(side=LEFT)

#Ajout de labelframe

Labelframe = LabelFrame(fenetre, text="Quel est ton pourcentage de bonheur?", padx=20, pady=20)
Labelframe.pack(fill="both", expand="yes")

#Ajout d'une spinbox
s = Spinbox(Labelframe, text="A combien tu est mon amie?", from_=0, to_=100)
s.pack()

#Ajout d'une alerte sur un bouton

def bouh():
    if askyesno("Attention", "Cliquez ici"):
        showwarning("BOUH!")

    else:
        showinfo("Allez...", "Allez, clique!")

bouton2 = Button(fenetre, text="Clique Ici", command=bouh)
bouton2.pack()

#Ajout d'une barre de menu

def alert():
    showinfo("OUAF", "OUAF")

def miaou():
    showinfo("MIAOU", "MIAOU")

def ouvreImage():
    # récupération et affichage d'image

    filepath = askopenfilename(title="Ouvrir une image PNG", filetypes=[('png files', '.png'), ('all files', '.*')])
    photo2 = PhotoImage(file=filepath)
    canvas3 = Canvas(fenetre, width=photo2.width(), height=photo2.height())
    canvas3.create_image(0, 0, anchor=NW, image=photo2)
    canvas3.pack()

def ouvreTexte():
    # Récupération et affichage de txt
    filename = askopenfilename(title="Ouvrir votre document", filetypes=[('txt files', '.txt'), ('all files', '.*')])
    fichier = open(filename, "r")
    content = fichier.read()
    fichier.close()

    Label(fenetre, text=content).pack(padx=10, pady=10)

menubar = Menu(fenetre)

menu1 = Menu(menubar, tearoff=0)
menu1.add_command(label="Chien", command=alert)
menu1.add_separator()
menu1.add_command(label="Quitter", command=fenetre.quit)
menubar.add_cascade(label="Canidé", menu=menu1)

menu2 = Menu(menubar, tearoff=0)
menu2.add_command(label="Chat", command=miaou)
menubar.add_cascade(label="Félidés", menu=menu2)

menu3 = Menu(menubar, tearoff=0)
menu3.add_command(label="Ouvrir un txt", command = ouvreTexte)
menubar.add_cascade(label="Ouvrir des fichiers", menu=menu3)

fenetre.config(menu=menubar)

#Ajout d'un bouton qui change le curseur

Button(fenetre, text="croix", relief=RAISED, cursor="pirate").pack(side=LEFT)

#Ajout d'une image
photo = PhotoImage(file="squirrel.png")

canvas = Canvas(fenetre, width = 350, height = 400)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()

#Récupération d'input
def recup():
    showinfo("Alerte", entree.get())

value = StringVar()
value.set("Valeur")
entree = Entry(fenetre, textvariable=value, width=30)

bouton3 = Button(fenetre, text="Valider", command=recup)
bouton3.pack()

fenetre.mainloop()

Le fichier squirrel.png qui va avec:

Media:Squirrel.png

 


Script 2 : Un éditeur de texte

Un éditeur de texte tout simple, basé sur le widget Text de tkInter.

La fonction recup est laissée pour expliquer le fonctionnement.

from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *

# -*- coding: latin-9 -*-

#ELEMENTS GRAPHIQUES

window = Tk()

frame1 = Frame(window, borderwidth = 10, relief = GROOVE)
frame1.pack(side=LEFT, padx=10, pady=10)

#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()

###FONCTIONS

###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

def recup():
    showinfo("Alerte", entree.get(0.0, 50.50))

#Fonction qui récupère le texte et le met dans un fichier texte, ou crée le fichier

def recuptexte():

    texteBrut = entree.get(0.0, END)
    filename = asksaveasfile(mode='w', defaultextension=".txt")
    filename.write(texteBrut)
    filename.close()

#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())

#Fonction qui insère un texte en fin de fichier
def insereTexte():
    file = askopenfile(mode='r', defaultextension=".txt")
    entree.insert(END, file.read())

#affiche une fenêtre avec le nom de la créatrice

def credits():
    aPropos = Tk()
    label = Label(aPropos, text="Par Justine\nVive les écureuils!", bg="pink")
    label.pack()
    aPropos.mainloop()


#Barre de menu

menubar = Menu(window)

menu1 = Menu(menubar, tearoff=0)
menu1.add_command(label="Enregistrer", command=recuptexte)
menubar.add_cascade(label="Enregistrer", menu=menu1)

menu2 = Menu(menubar, tearoff=0)
menu2.add_command(label="Ouvrir un txt", command = ouvreTexte)
menu2.add_separator()
menu2.add_command(label="Insérer un fichier", command = insereTexte)
menubar.add_cascade(label="Ouvrir...", menu=menu2)

menu3 = Menu(menubar, tearoff=0)
menu3.add_command(label="Quitter", command = window.quit)
menubar.add_cascade(label="Quitter", menu=menu3)

menu4 = Menu(menubar, tearoff = 0)
menu4.add_command(label="À propos", command = credits)
menubar.add_cascade(label="À propos", menu=menu4)

window.config(menu=menubar)