|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||||||||
|
Expert Confirmé
![]() Patrice BLANGARINTechnicien Help Desk, maintenance, réseau, système et + Inscription : juin 2006 Messages : 2 650 ![]() |
Bonjour,
Peut être un rajout à faire dans la FAQ. C'est un basique mais bon... Citation:
@+
__________________
Merci d'utiliser le forum pour les questions techniques. |
|||||||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 739 ![]() |
Salut,
D'un point de vue technique:
Le nom de la variable TCL étant indispensable pour lier l'objet tkinter à "l'objet" TCL correspondant, tkinter devra construire le nom "unique" de la variable TCL associée. De plus, nous avons un nommage hiérarchique pour les widgets et "plat" pour variables, images, commandes,... Le soucis est que tkinter ne vérifie pas toujours l'existence de la variable TCL avant de passer une commande. TCL ne connaissant que le nom des variables créées par tkinter, il ne pourra pas deviner à quel objet cela correspond. Mais si le nom n'a pas été précisé par l'appelant, ajouter du code pour éviter l'erreur ne sera pas plus lisible. Au delà des considérations techniques, il y a surtout un problème de "conception" quant à ce qu'on appelle "application". Associer plusieurs applications Tk à la même application Python (ce qu'on fait en créant plusieurs instances Tk reflète souvent une incompréhension de ce qu'est une instance Tk. Une fois qu'on a dit çà, il n'y a plus trop de sens à créer le widget d'une application dans une autre... "default root" est la mécanique qui rend compte de ce cas général: l'application Tk est celle qui a été crée et à l'instant t il y a en 0 ou 1. tkinter pourrait alerter le débutant en produisant un "warning" lorsqu'il essaie de créer une nouvelle instance Tk sans avoir positionné tk.NoDefautlRoot. Positionner tk.NoDefaultRoot force l'appelant à préciser le master dans tous les cas, et évite bien des tracas si on doit débugger ce type d'application "particulière". Le cas général reste quand même d'avoir une application Python pour une application Tk. "default root" ayant été construit pour ne pas avoir (toujours) préciser le master dans ce cas, difficile de recommander le contraire! Pourquoi ne pas recommander d'appeler tk.NoDefaultRoot avant tout? - W
__________________
Architectures Post-Modernes |
|
|
00
|
|
|
#3 | |
|
Expert Confirmé
![]() Patrice BLANGARINTechnicien Help Desk, maintenance, réseau, système et + Inscription : juin 2006 Messages : 2 650 ![]() |
Bonjour wiztricks,
En fait le but était de ne pas aller jusqu’à la tkapp et rester sur quelque chose de 'simple', en donnant les informations 'minimums' pour comprendre l'explication Ceci dit: Citation:
Si cela semble 'utile' autant rajouter tk.NoDefaultRoot à la fin mais laisser l'information 'simple', non ? @+
__________________
Merci d'utiliser le forum pour les questions techniques. |
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juin 2008 Messages : 3 739 ![]() |
L'information "simple" est de dire que la création simultanée d'instances tk n'est supportée qu'après un appel tk.NoDefaultRoot().
Dès qu'on se lance dans l'explication du "pourquoi", on n'est plus dans le "simple" mais dans les explications +/- rapides du fonctionnement de tkinter, tk,... qui risquent d''embrouiller le lecteur. - W
__________________
Architectures Post-Modernes |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com