Python : Tkinter
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:
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)