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


Ligne 77 : Ligne 78 :


 
 




Ligne 82 : Ligne 84 :


Un éditeur de texte tout simple, basé sur le widget Text de tkInter.
Un éditeur de texte tout simple, basé sur le widget Text de tkInter.
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 *
<div style="background:#eeeeee;  border:1px solid #cccccc;  padding:5px 10px"><pre>from tkinter import *
from tkinter.messagebox import *
from tkinter.messagebox import *
Ligne 104 : Ligne 108 :
###Cette fonction génère une alerte, qui affiche le contenu de l'entree avec entree.get()
###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
#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
#L'indice après le .get correspond à ligne.colonne&nbsp;: On prend tout de ligne0 colonne 0 à ligne50 colonne 50


def recup():
def recup():

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)