13

を使用してデータベースからレコードを取得sqlite3し、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)

ここに画像の説明を入力

4

5 に答える 5

35

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

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

これにより、その空の列が削除されます。

于 2012-01-05T08:53:04.750 に答える
2

おそらく、TreeView よりもTkTableのようなものを使用したいでしょう。
TreeView では、最初の列は、各行に記述されたオブジェクトに名前または ID を与えるために定義されます。ドキュメントから:

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

最初の列に次の情報を入力します。

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

最初の列を通常の列として使用したい場合は、次を試してください。

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

ただし、TreeView のこの最初の列の見出しを埋める方法や可能性があるかどうかもわかりません。

于 2011-12-31T16:12:34.440 に答える