Style de page


phpMyVisites | Open source web analytics phpMyVisites

Tkinter

Tkinter est une adaptation du toolkit tk de tcl à python.
Il permet de créer les widgets (objets graphiques) suivants:
  • button
  • label
  • entry:entrée de texte simple.
  • text: zone de saisie ou affichage de texte plus évoluée.
  • menu
  • menubutton: menu lié à un bouton.
  • canvas: pour afficher des dessins
  • photo: pour afficher des images
  • checkbutton
  • radiobutton
  • frame: zone pouvant contenir d'autres widgets.
  • labelframe: une frame avec un titre.
  • listbox: afficher une liste.
  • panedwindow: pour séparer une fenêtre ou frame en deux zones ajustables.
  • scrollbar: ascenseurs en bordure de fenêtre, zone de texte ou autre widget
  • toplevel: permet d'ouvrir une nouvelle fenêtre
Et si cela ne suffit pas on utiliser des widgets supplémentaires grâce à des extensions comme Bwidget et Iwidget.
Pour placer les widget dans une fenêtre, il existe trois gestionnaires:
  • Le packer
  • Le grid
  • Le placer

On peut créer des évênements avec la commande bind.

Le packer

La commande pack permet de placer des widgets soit horizontalement (side=left ou rigth),
soit verticalement (side=top).
Lorsqu'on veut passer d'un placement horizontal à un placement vertical on utilise des frame.
Exemple: pack
from Tkinter import *

# Création de la fenêtre principale:
root = Tk()

# Titre de la fenêtre:
root.title("pack")

f=Frame(root)
msg="0"
lb1=Label(f,text="message")
entre=Entry(f,textvariable=msg)

lb2=Label(root,text="resultat:")
res=Label(root,textvariable=msg,fg="blue")

# On place les premiers widgets horizontalement dans la frame:
lb1.pack(side="left")
entre.pack()

# puis on place la frame et les autres widget verticalement:
f.pack(side="top")
lb2.pack()
res.pack()

root.mainloop()
Remarque:
f.destroy() 
permet de supprimer la frame f.

f.forget() 
retire le widget de l'interface sans le détruire, on peut le replacer avec la commande pack.

Le grid

Le même exemple que préccédement, avec la commande grid:
from Tkinter import *
root = Tk()

msg="0"
lb1=Label(root,text="message")
entre=Entry(root,textvariable=msg)

lb2=Label(root,text="resultat:")
res=Label(root,textvariable=msg,fg="blue")

lb1.grid(row=0,column=0)
entre.grid(row=0,column=1)
lb2.grid(column=1)
res.grid(column=1)

root.mainloop()
Les options column et row permettent de spécifier le positionnement d'un objet.
Dans l'exemple ci-dessus cela permet de se passer d'une frame.

placer

Le placer

La commande place permet de placer un objet graphique (widget) à la position x y:
 from Tkinter import *
root = Tk()
lb=Label(root,text="un label")
lb.place(x=50,y=50 )

root.mainloop()

La commande configure

Cette commande permet de modifier des options de n'importe quel widget déjà placé sur l'interface.
Exemple, pour changer la couleur d'un label:
lb.configure(bg="blue",fg="white")

Les évenements

La méthode bind permet d'associer une commande (ou une procédure) à un événement (clavier, souris, focus...).
Quand l'événement a lieu, la commande (ou la procédure) est exécutée.
Synthaxe:
widget.bind(<événement>,commande)
Exemple:
set var 0
set var1 "..."
label .lab -textvariable var
bind .lab <1> { incr var}       ;# un click gauche incrémente var1
bind .lab <2> { set var 0}      ;# un click du milieu remet var1 à 0
bind .lab <3> { incr var -1}    ;# un click droit décrémente var1

label .lab1 -textvariable var1
bind .lab1  { set var1 "Enter" }  ;# quand le pointeur de la souris entre dans le widget
bind .lab1  { set var1 "Leave" }  ;# quand il en sort

# raccourci clavier pour quitter le programme:
bind .  quitter

proc quitter {} {
  exit
}

pack .lab .lab1