FAQ Python
FAQ PythonConsultez toutes les FAQ
Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 14 juin 2021
- Comment empêcher le redimensionnement d'une fenêtre par l'utilisateur ?
- Comment afficher une fenêtre en plein écran ?
- Comment forcer le rafraîchissement d'une fenêtre ?
- Comment intercepter la fermeture d'une fenêtre ?
- Comment modifier le texte de la barre de titre d'une fenêtre ?
- Comment modifier l'icône de la barre de titre d'une fenêtre ?
- Comment créer une fenêtre sans barre de titre ni bordure ?
root.resizable
(
width=
False
, height=
False
)
Remarque: en revanche, cela n'empêchera pas le redimensionnement automatique de votre fenêtre si vous utilisez le gestionnaire de géométrie pack ou grid
De manière très simple, en appliquant l'instruction root.wm_state(newstate="zoomed"), vous afficherez la fenêtre principale en plein écran. Cette instruction ne fonctionne que sous windows
Tkinter ne rafraîchit l'interface graphique que lorsque le traitement de l'exécution de la fonction lancée est terminée
(par exemple lorsque l'on clique sur un bouton). Il arrive cependant parfois que la fonction exécutée dure un certain temps
qui empêche donc la fenêtre de se redessiner.
Si vous voulez éviter ce désagrément, vous pouvez rajouter dans votre programme des appels à root.update()
import
Tkinter as
Tk
root =
Tk.Tk
(
)
lbl =
Tk.Label
(
text=
0
)
def
go
(
):
for
i in
range(
100000
):
lbl.config
(
text=
i)
root.update
(
)
btn =
Tk.Button
(
text=
'go'
, command=
go)
lbl.pack
(
)
btn.pack
(
)
root.mainloop
(
)
Tkinter supporte un mécanisme appelé protocol handlers dont le plus utilisé est le protcole WM_DELETE_WINDOW qui définit ce qui doit se passer quand une fenêtre se ferme. Ce protocole doit être associé à un widget de type root ou Toplevel de la manière suivante widget.protocol("WM_DELETE_WINDOW", handler) où handler est la fonction exécutée lors de la fermeture de la fenêtre.
import
Tkinter as
Tk
root =
Tk.Tk
(
)
def
Intercepte
(
):
print
"Interception de la fermeture de la fenetre"
root.destroy
(
)
root.protocol
(
"WM_DELETE_WINDOW"
, Intercepte)
root.mainloop
(
)
Pour modifier le texte de la barre de titre d'un widget de type root ou Toplevel il suffit d'appliquer la fonction w.title(mytitle) où mytitle est le nouveau texte en question.
import
Tkinter as
Tk
root =
Tk.Tk
(
)
root.title
(
'Main root'
)
def
createframe
(
):
toplevel =
Tk.Toplevel
(
root)
toplevel.title
(
'Subroot'
)
btn =
Tk.Button
(
root, text =
'create a frame'
, command =
createframe)
btn.pack
(
)
root.mainloop
(
)
Pour modifier l'icône de la barre de titre d'une fenêtre root ou toplevel, il vous suffit d'appliquer la fonction root.iconbitmap(myicon) où myicon représente le chemin d'accès de votre icône (testé uniquement avec des fichiers de type .ico)
import
Tkinter as
Tk
root =
Tk.Tk
(
)
root.iconbitmap
(
"MyIcon.ico"
)
root.mainloop
(
)
Si vous avez besoin de créer des fenêtres root (Tk) ou TopLevel, vous pouvez lui appliquer la fonction overrideredirect(flag=None)
avec un flag ayant une valeur non nulle. Cela peut être utile par exemple pour afficher une fenêtre contenant un message (une infobulle par
exemple). Toutefois, vous ne pourrez ni déplacer ni détruire cette fenêtre de manière ordinaire (il faudra donc prévoir dans votre code les fonctions
nécessaires pour gérer cela).
import
Tkinter as
Tk
root =
Tk.Tk
(
)
def
affiche
(
):
top=
Tk.Toplevel
(
)
top.overrideredirect
(
1
)
btn =
Tk.Button
(
top, text =
'Fermer'
, command =
top.destroy)
btn.pack
(
)
btn =
Tk.Button
(
root, text =
'Afficher message'
, command =
affiche)
btn.pack
(
)
root.mainloop
(
)