6 votes

Que fait overrideredirect ?

J'ai compris que overrideredirect permet de supprimer les décorations par défaut des fenêtres, comme la barre d'outils, mais quelles sont ses autres utilisations ? Je ne suis pas très sûr et je n'ai pas trouvé beaucoup de documentation.

Je travaille sur un Mac. En utilisant tkinter, je veux obtenir une fenêtre qui conserve sa taille maximale et ne peut pas être redimensionnée, ce que j'ai obtenu en utilisant la méthode suivante géométrie y redimensionnable . Ce dont j'ai besoin maintenant, c'est de la garantie qu'aucune frappe aléatoire de mon utilisateur ne pourra fermer la fenêtre. Overrideredirect m'y aidera-t-il ? Existe-t-il une autre solution ?

4voto

Billal Begueradj Points 5336

Vous pouvez utiliser overrideredirect() et met son drapeau à True . Ceci empêchera la fermeture de votre fenêtre par moyens réguliers comme indiqué dans le lien ci-dessus. Par moyens réguliers il s'agit de la X et le bouton Alt + F4 combinaison de touches.

Puisque vous avez utilisé geometry() y resizable() vous devez appeler update_idletasks() t o obliger l'affichage à être mis à jour avant le prochain ralenti de l'application .

Voici un exemple :

import Tkinter as Tk

root = Tk.Tk()
root.geometry('200x200+100+100')
root.resizable(False, False)
root.update_idletasks()
root.overrideredirect(True)
root.mainloop()

Inconvénient de cette méthode : elle fonctionne toujours sur la plateforme Microsoft Windows mais peut ne pas fonctionner sur certaines plateformes Unix et MacOS.

EDIT :

Vous avez demandé des précisions sur update_idletasks() Je pense qu'il est préférable de citer directement sa documentation, car c'est plus clair (mais si vous ne comprenez pas cette citation, faites-le moi savoir) :

Certaines tâches de mise à jour de l'affichage, telles que le redimensionnement et le redécoupage. widgets, sont appelées tâches inactives car elles sont généralement différées jusqu'à ce que l'application ait fini de traiter les événements et qu'elle soit retournée à la boucle principale pour attendre de nouveaux événements.

Si vous voulez forcer la mise à jour de l'affichage avant le prochain ralenti de l'application, appelez la méthode w.update_idletasks() sur n'importe quel widget widget.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X