Bonjour à tous,
Je ne suis pas développeur de formation, mais je me débrouille.
J'ai toujours eu un peu de mal avec les interfaces graphiques. Tkinter est à la fois très pratique et en même temps souvent obscur (pour moi au moins).
Je m'en suis toujours sorti dans mes dialogues en leur passant un objet vide (liste, dictionnaire ou autre) en paramètre, pour récupérer d'éventuelles données selon mes besoins.
J'ai récemment jeté un coup d'oeil au module "simpledialog", et là, je reste totalement perdu!
Première classe: SimpleDialog... Je vois bien ce qu'elle fait, et surtout qu'elle ouvre une Toplevel en tant qu'attribut, ce qui facilite sans doute la gestion de données récupérées.
Classe suivante: Dialog, dérivée de Toplevel. Donc SimpleDialog ne sert à rien ici.
Dans le constructeur, on trouve après self.grab-set() : self.wait-window(self). Je comprends bien (enfin je pense...) ces deux instructions que j'utilise régulièrement. Wait-window attend que la fenêtre soit détruite.
On trouve ensuite une classe _QueryDialog dérivée de Dialog, donc de Toplevel. Cette classe précise les choses et ajoute un corps sous forme de composant Entry, etc...
Et enfin, des sous-classe de _QueryDialog (_QueryInteger, etc...) qui fixent deux nouvelles informations: message d'erreur et méthode de récupération du contenu de l'entrée.
Et là: une fonction askinteger (et les autres), qui se contente de créer une Toplevel à travers la classe _QueryInteger, et de retourner un attribut de cette classe (en l'occurence l'attribut result issu de la classe de base _QueryDialog).
Et c'est là que je suis perdu !!!
d = _QueryInteger(....) crée une Toplevel et attend que celle-ci soit détruite et ensuite seulement la fonction retourne d.result, attribut de la fenêtre qui vient d'être détruite (théoriquement).
Je loupe forcément quelque chose. Je n'ai pas programmé en python depuis une paire d'années, et j'en ai peut-être perdu "l'esprit".... mais je ne comprends pas. A force de lire et de relire, je ne vois plus rien!
Si quelqu'un pouvait m'expliquer ce qui se passe réellement, et où je loupe un truc, je lui en serais très reconnaissant.
Je me sens un peu stupide, mais j'avoue que ça tourne à l'obsession.
Merci d'avance pour votre aide.
Partager