tkinter: nouvelle fenêtre - dialogue
f - Création de fenêtres & boîtes de dialogues
Création d'une nouvelle fenêtre
Boîtes de dialogue
Pour les interactions les plus plus simples, il existe des boîtes de dialogue simples, par exemple pour afficher simplement une information avecshowinfo
de la bibliothèque messagebox
:
from tkinter import *
from tkinter.messagebox import *
def affich():
showinfo("Une info ?","Une info !")
btn.config(text="Revoir l'info ?")
gui=Tk()
gui.title("Boîtes de message")
info=Label(gui,text="Besoin d\'une info ?",font="arial 14 bold")
info.pack()
btn=Button(gui,text="click me !",bg='yellow',fg='red',command=affich)
btn.pack()
gui.mainloop()
pour obtenir
D'autres boîtes de dialogue existent aussi, comme
askstring
(pour un mot de passe par exemple),
ou askopenfilename
pour ouvrir un fichier …
voir les bibilothèques
messagebox
, simpledialog
et filedialog
de tkinter.
Par exemple, avec une boîte de dialogue pour demander une confirmation, une autre pour afficher une info:
# -*- coding: utf-8 -*-
from tkinter import *
from tkinter.messagebox import *
gui=Tk()
def callback():
ans=askyesno('Titre 1', 'Êtes-vous sûr de vouloir faire ça?')
if ans:
showwarning('Ok', 'Super !')
else:
showinfo('No', 'Tant pis ...')
showerror("No", "Une autre fois ....")
btn=Button(text='Action', command=callback)
btn.pack(padx=10,pady=10)
gui.mainloop()
Création avec Toplevel
On a créé et utilisé jusqu'ici une interface contenue dans une, et une seule, fenêtre.
On peut décider aussi d'en créé et utiliser plusieurs, comme avec l'exemple très courant d'une feêtre "pop-up" pour demander la confirmation d'une action.
Le widget
Toplevel
est destiné justement à afficher des fenêtres supplémentaires.
Chaque fenêetre ainsi ouverte se manipule alors comme la fenêtre principale, par exemple:
from tkinter import *
gui=Tk()
def ConfirmWindow():
newWindow = Toplevel(gui)
lbl=Label(newWindow,text="Quitter ?")
lbl.pack(side=TOP,pady=10)
btnQuitNew=Button(newWindow,text="No",command=newWindow.destroy)
btnQuitNew.pack(side=LEFT)
btnQuitAll=Button(newWindow,text="Yes",command=gui.destroy)
btnQuitAll.pack(side=RIGHT)
btn = Button(gui, text="Click ?",command=ConfirmWindow)
btn.pack(padx=10,pady=10)
gui.mainloop()
qui permet, via un bouton dans la fenêtre principale gui
d'en ouvrir une deuxième, et dans laquelle on créé une zone de texte Label
ainsi que 2 boutons:
Top Programmation en python