« 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
Ligne 78 : Ligne 78 :
 
 


== Script 2 : Un éditeur de texte ==
 
== Script 2 : Un éditeur de texte ==


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.
<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px">
<div style="background:#eeeeee; border:1px solid #cccccc; padding:5px 10px"><pre>from tkinter import *
##JuEdit.py
from tkinter.messagebox import *
 
from tkinter.filedialog import *
from tkinter import *<br/> from tkinter.messagebox import *<br/> from tkinter.filedialog import *


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


<br/> #ELEMENTS GRAPHIQUES
#ELEMENTS GRAPHIQUES


window = Tk()
window = Tk()


<br/> frame1 = Frame(window, borderwidth = 10, relief = GROOVE)<br/> frame1.pack(side=LEFT, padx=10, pady=10)
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<br/> entree = Text(frame1, height=30, width=120, bg="#3f4754", fg="white")<br/> entree.pack()
#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()


<br/> ###FONCTIONS
###FONCTIONS


<br/> ###On fait une entrée et on récupère le texte<br/> ###Cette fonction génère une alerte, qui affiche le contenu de l'entree avec entree.get()<br/> #La fonction get d'une entree sert à récupérer le texte qu'elle contient<br/> #L'indice après le .get correspond à ligne.colonne : On prend tout de ligne0 colonne 0 à ligne50 colonne 50
###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():<br/> &nbsp;&nbsp;&nbsp; showinfo("Alerte", entree.get(0.0, 50.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
#Fonction qui récupère le texte et le met dans un fichier texte, ou crée le fichier
Ligne 106 : Ligne 113 :
def recuptexte():
def recuptexte():


&nbsp;&nbsp;&nbsp; texteBrut = entree.get(0.0, END)<br/> &nbsp;&nbsp;&nbsp; filename = asksaveasfile(mode='w', defaultextension=".txt")<br/> &nbsp;&nbsp;&nbsp; filename.write(texteBrut)<br/> &nbsp;&nbsp;&nbsp; filename.close()
    texteBrut = entree.get(0.0, END)
    filename = asksaveasfile(mode='w', defaultextension=".txt")
    filename.write(texteBrut)
    filename.close()


#Fonction qui ouvre un texte existant<br/> def ouvreTexte():<br/> &nbsp;&nbsp;&nbsp; file = askopenfile(mode='r', defaultextension=".txt")<br/> &nbsp;&nbsp;&nbsp; entree.delete(0.0, END)<br/> &nbsp;&nbsp;&nbsp; entree.insert(0.0, file.read())
#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<br/> def insereTexte():<br/> &nbsp;&nbsp;&nbsp; file = askopenfile(mode='r', defaultextension=".txt")<br/> &nbsp;&nbsp;&nbsp; entree.insert(END, 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
#affiche une fenêtre avec le nom de la créatrice


def credits():<br/> &nbsp;&nbsp;&nbsp; aPropos = Tk()<br/> &nbsp;&nbsp;&nbsp; label = Label(aPropos, text="Par Justine\nVive les écureuils!", bg="pink")<br/> &nbsp;&nbsp;&nbsp; label.pack()<br/> &nbsp;&nbsp;&nbsp; aPropos.mainloop()
def credits():
    aPropos = Tk()
    label = Label(aPropos, text="Par Justine\nVive les écureuils!", bg="pink")
    label.pack()
    aPropos.mainloop()


&nbsp;


#Barre de menu
#Barre de menu
Ligne 122 : Ligne 142 :
menubar = Menu(window)
menubar = Menu(window)


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


<br/> menu2 = Menu(menubar, tearoff=0)<br/> menu2.add_command(label="Ouvrir un txt", command = ouvreTexte)<br/> menu2.add_separator()<br/> menu2.add_command(label="Insérer un fichier", command = insereTexte)<br/> menubar.add_cascade(label="Ouvrir...", menu=menu2)
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)


<br/> menu3 = Menu(menubar, tearoff=0)<br/> menu3.add_command(label="Quitter", command = window.quit)<br/> menubar.add_cascade(label="Quitter", menu=menu3)
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)<br/> menu4.add_command(label="À propos", command = credits)<br/> menubar.add_cascade(label="À propos", menu=menu4)
menu4 = Menu(menubar, tearoff = 0)
menu4.add_command(label="À propos", command = credits)
menubar.add_cascade(label="À propos", menu=menu4)


window.config(menu=menubar)
window.config(menu=menubar)</pre>
</div>
</div>

Version du 21 novembre 2018 à 03:09

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.

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)