2017-06-09 22 views
0

私は、次のコードを使用して簡単なのTcl/TkのGUIアプリケーションを実行しようとしています:私は私にtclshコンソールを介してこれを実行しているし、それが正常に動作しますのTcl/Tkのツリービュー

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 

を。私は自分のアプリケーションが作成するGUIウィンドウを閉じ、そしてコードを実行するときしかし、私は次のエラーを取得する第二の時間:

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

だから私の質問は、これは私がコードをもう一度実行すると、なぜこれができないのでしょうか?

私がtclsh agianを起動すると、同じことが起こります。私のアプリケーションが作成するGUIウィンドウを閉じた後、初めてではなく、2回目ではありません。

ありがとうございました

答えて

0

代わりにこれを試してください。

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

唯一の違いは、トップレベルのウィジェットを作成すること(外観はアプリケーションウィンドウのように動作しますが、複数あることができます)です。あなたのツリーウィジェットを.の代わりに.treeの代わりに.t.treeのトップレベルの子にします。今度はトップレベルを閉じて、同じコードを実行して再び開くことができます。

アプリケーションウィンドウを閉じて、後で同じプロセスでTkコードを実行することはできません。これはウィンドウシステムの制限です。

ドキュメント: toplevel

関連する問題