Bonjour,
J'aimerais comprendre la différence entre les fenêtres Tk et Toplevel.
Si on souhaite créer plusieurs fenêtres, peut-on créer plusieurs Tk ? ou est-il préférable d'en faire une puis des Toplevel ?
Bonjour,
J'aimerais comprendre la différence entre les fenêtres Tk et Toplevel.
Si on souhaite créer plusieurs fenêtres, peut-on créer plusieurs Tk ? ou est-il préférable d'en faire une puis des Toplevel ?
Tk est une fenêtre principale à créer pour que ton interface graphique soit fonctionnel, elle est donc obligatoire et présente (elle peut être rendu invisible)
Toplevel est une fenêtre secondaire, qui est faîte pour ne surtout pas créer d'autres fenêtre principales
Surtout pas, ça voudrait dire créer plusieurs boucles événementielles, ça serait très difficile à gérer.Si on souhaite créer plusieurs fenêtres, peut-on créer plusieurs Tk ?
C'est fait pour !ou est-il préférable d'en faire une puis des Toplevel ?
Salut,
Si vous ouvrez la documentation, vous y trouveriez:
qui indique qu'une instance de Tk est plus qu'un simple Toplevel.class tkinter.Tk(screenName=None, baseName=None, className='Tk', useTk=1)
The Tk class is instantiated without arguments. This creates a toplevel widget of Tk which usually is the main window of an application. Each instance has its own associated Tcl interpreter.
L'interpréteur TCL associé à Tk définit l'espace de noms (TCL) associé aux widgets qui sont créés.
note: la documentation explique la correspondance entre widget tkinter et le nommage TCL associé.
Si vous avez plusieurs instances de Tk, vous aurez autant d'espaces de noms disjoints: widgets, variables, image travaillant ensemble devront être explicitement créées dans le bon espace de noms.
Comme, par défaut, tkinter va leur associer la première instance de Tk créée, çà cause de nombreux soucis au débutants.
absolument.
Ca c'est une légende urbaine: c'est pas parce qu'on à créé plusieurs Tk qu'on se retrouve avec plusieurs mainloop, il n'y en aura qu'une. C'est juste les espaces de nommages côté TCL qui sont différents (ce qui en rend l'usage difficile et inutile pour la plupart des applications).
- W
Salut wiztrick,Ca c'est une légende urbaine: c'est pas parce qu'on à créé plusieurs Tk qu'on se retrouve avec plusieurs mainloop, il n'y en aura qu'une. C'est juste les espaces de nommages côté TCL qui sont différents (ce qui en rend l'usage difficile et inutile pour la plupart des applications).
Attention de ne pas dire ce que je n'ai pas dis... J'ai dis que ça serait très difficile à gérer, ce qui implique sa faisabilité, cependant je ne le conseille pas, surtout pour un débutant et même pour un développeur confirmé, car je n'en vois pas vraiment le besoin conceptuel.
Je me contente de lire:
Il n'y a pas "plusieurs boucles évènementielles".
Et si on veut se faciliter la vie, on peut appeler la fonction tkinter.NoDefaultRoot() pour forcer la précision du "master" (car c'est essentiellement ce qui fout la grouille).
Pour avoir besoin d'utiliser ce genre de fonctionnalités, il faut, par exemple, utiliser le nommage des widgets (autre que le défaut). Si on doit à intégrer deux applications construites çà peut aider à éviter des collisions.
Sûr que ce n'est pas le soucis du débutant qui peut se contenter de diviser le monde en fenêtre principales et secondaires.
- W
Merci beaucoup pour vos réponses.
Partager