2011-12-31 39 views
4

sqlite3を使用してデータベースからレコードを取得し、Treeviewを使用してそれらを表示するプログラムを作成しようとしています。Treeviewオブジェクトの空の最初の列を削除します

レコードで作成されたテーブルを作成することに成功しましたが、最初の空の列を削除できません。

def executethiscommand(search_str): 
    comm.execute(search_str) 
    records = comm.fetchall() 
    rows = records.__len__() 
    columns = records[0].__len__() 

    win = Toplevel() 
    list_columns = [columnames[0] for columnames in comm.description] 
    tree = ttk.Treeview(win) 
    tree['columns'] = list_columns 

    for column in list_columns: 
     tree.column(column, width=70) 
     tree.heading(column, text=column.capitalize()) 

    for record in records: 
     tree.insert("", 0, text="", values=record) 

    tree.pack(side=TOP, fill=X) 

enter image description here

答えて

1

おそらくあなたは、TreeViewコントロールよりも優れTkTableのようなものを使用します。
TreeViewでは、各行に記述されているオブジェクトに名前またはIDを与えるための最初の列が定義されています。 docsから:

ツリービューウィジェットは表示され、項目の階層 を閲覧できるように、ツリーの右側の列 として各項目の1つ以上の属性を表示することができます。

あなたがして最初の列を埋める:私はどのように知っているか、いけないしかし

tree['columns'] = list_columns[1:] 
for record in records: 
    tree.insert("", 0, text=record[0], values=record[1:]) 

:あなたはまだあなたが試すことができ、通常の列として最初の列を使用したい場合は

tree.insert('', insert_mode, text='name first col') 

TreeViewでこの最初の列の見出しを記入することも可能であっても、

+0

それを隠すだろうので、0に幅を設定し、最初の列の識別子です。ありがとう、ジョアキン、しかし、あなたは空の列の名前を割り当てる方法も教えていただけますか?あなたの助けに感謝:) –

17

最初の空の列はアイテムの識別子です。showパラメータを設定することで、最初の空の列を抑制できます。

t = ttk.Treeview(w) 
t['show'] = 'headings' 

これで空の列が削除されます。

2

少し遅れてやハックが、何をも行うことができます:

tree.column("#0", width=0) 

「#0」技術的に

+2

これは、少なくとも私のために、動作しません。あたかもそのコマンドで暗示されている最小幅があるかのように、空の小さな列が表示されます。 – pagliuca

+2

これはうまくいきませんが、minwidth = 0を追加すると、デフォルトのminwidthの問題が解決されました。 –

関連する問題