2017-06-09 2 views
0

Je suis en train d'exécuter une simple application IUG Tcl/Tk en utilisant le code suivant:Tcl/Tk TreeView

package require Tk 
ttk::treeview .tree -columns "Creator Year" -displaycolumns "Year Creator" 
.tree heading Creator -text "Creator" -anchor center 
.tree heading Year -text "Year" -anchor center 
pack .tree 

Je courais cela par ma console tclsh et il fonctionne très bien. Cependant, quand je ferme la fenêtre GUI mon application crée, et exécuter le code une deuxième fois que je reçois l'erreur suivante:

this isn't a Tk applicationNULL main window

invalid command name ".tree"

invalid command name ".tree"

can't invoke "pack" command: application has been destroyed

Alors mes questions est ce pourquoi elle échoue quand je lance le code une deuxième fois?

si je démarre le tclsh agian je reçois la même chose. fonctionne la première fois mais pas la deuxième fois après la fermeture de la fenêtre de l'interface graphique que mon application crée.

Merci

Répondre

0

Essayez à la place. La seule différence est que vous créez un widget toplevel (ressemble et agit comme la fenêtre de l'application, mais vous pouvez en avoir plusieurs). Faites de votre widget d'arbre un enfant du premier niveau au lieu de .: .t.tree au lieu de .tree. Maintenant, vous pouvez fermer le toplevel et l'ouvrir à nouveau en exécutant le même code.

Vous ne pouvez pas fermer la fenêtre de l'application et exécuter plus tard le code Tk dans le même processus: c'est une limitation du système de fenêtrage.

Documentation: toplevel