2017-12-06 4 views
1

私はWindows 7のPython 2.7でTkinterを使用しています。ツリースタイルのチェックボックスリストを持つポップアップボックスを作成する必要があることがわかりました。私はTkinter、またはttkでこれを見つけることができませんでした。私は、TixのCheckListウィジェットでそれを見つけました。私はTixを使ってスタンドアロンの実例を作っていますが、自分のメインプログラムを制御するttk.FrameにTix.CheckListを追加する方法がわかりません。TkinterコンテナにTixウィジェットを追加する

確かに私はTixフレームワークを根本的に使用する必要はありませんか?

import Tix 
import pandas as pd 
import Tkinter as tk 

class TreeCheckList(object): 
    def __init__(self, root): 
     self.root = root 

     self.cl = Tix.CheckList(self.root) 
     self.cl.pack(fill=Tix.BOTH, expand=Tix.YES) 
     self.cl.hlist.config(bg='white', bd=0, selectmode='none', selectbackground='white', selectforeground='black', drawbranch=True, pady=5) 

     self.cl.hlist.add('ALL', text='All Messages') 

     self.cl.hlist.add('ALL.First', text='First') 
     self.cl.setstatus('ALL.First', "off") 

     self.cl.hlist.add('ALL.Second', text='Second') 
     self.cl.setstatus('ALL.Second', "off") 

     self.cl.autosetmode() 

def main(): 
    root = Tix.Tk() 
    top = Tix.Toplevel(root) 

    checklist = TreeCheckList(top) 
    root.update() 
    top.tkraise() 
    root.mainloop() 

if __name__ == '__main__': 
    main() 

上記のコードは、すべてのTixウィジェットを使用するスタンドアロンプ​​ログラムで動作します。私は私を期待していた

root = tk.Tk() 
top = tk.Toplevel(root) 

root = Tix.Tk() 
top = Tix.Toplevel(root) 

:しかし、私は私の大きなプログラムにこれを実装しようとすると、私はスタンドアロンでこれをシミュレートするためにTclError: invalid command name "tixCheckList"
を受け、私はラインを変更しましたTix.Top()を実装してtk.Tk()ルートに置くこともできますが、同じ問題です。

私はTixフレームを使用するときにのみTixフレームを使用できますか、何かを誤解していますか?誰かが良いTixのドキュメントを持っているなら、私は何でも得ることが大好きです。それは良い文書の上にそれほど多くないと思われます。それともttkに含まれているこの同じ機能ですか?それを見落としましたか?それは残された唯一のもののようです。

答えて

1

私はちょうどrootがTixクラスである必要があることを明らかに知った。 Tk、したがってttkはTixルートに追加されるように見えます(大部分はTkinterクラスを拡張するので、これは "修正"のようです)。だから、私の問題は、私は、私はカプセル化の目的のために望んでいなかった私のプログラムの一部にTixのを引っ張ることを必要としなかっただけで

root = tk.Tk()

root = Tix.Tk()

これを変更することによって解決されている可能性がありしかし、私は他の方法はないと思う。

関連する問題