

あらかじめ用意されたテキストファイルをtkinterを利用して表形式で出力したいと考えています。空白を確認したら次の列、改行を確認したら次の行に出力されることを想定しています。しかしどのようにプログラムを組めばそのような結果になるか分かりません。

**エラーメッセージ:**

[code]

    Traceback (most recent call last):
      File "C:/Program Files/Python36/トポロジー情報の出力.py", line 29, in <module>
        tree.insert(parent='', index=0, iid=0, values=(i,line))
      File "C:\Program Files\Python36\lib\tkinter\ttk.py", line 1341, in insert
        "-id", iid, *opts)
    _tkinter.TclError: Item 0 already exists
    
[/code]

**現状のコード:**

[code]

    import tkinter as tk
    from tkinter import ttk
    from tkinter import Frame
    from tkinter import Button
    from tkinter import LEFT
    import tkinter.filedialog as fd
    
    # ファイルの呼び出し
    path = fd.askopenfilename()
    
    # メインウィンドウの生成
    root = tk.Tk()
    root.title("表形式で出力")
    
    frame = Frame(root)
    
    # Treeviewの生成
    tree = ttk.Treeview(frame, columns=(1,2), show='headings', height=20)
    
    # 列の見出し設定
    tree.heading(1, text="1")
    tree.heading(2, text="2")
    
    i = 0
    # テキストファイルの読み込み
    with open(path, "r") as f:
        for line in f:
            i = i + 1
            tree.insert(parent='', index=0, iid=0, values=(i,line))
    ran = int(len(line) / 2)
    
    # ウィジェットの配置
    frame.pack()
    tree.pack(side=LEFT)
    scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
    button.pack()
    
    tk.mainloop()
    
[/code]


CC BY-SA 4.0
2022-12-14T03:45:06.440
92769
2022-12-14T11:58:19.410
2022-12-14T11:58:19.410
3060
55268
question
python python3 tkinter
読み込んだファイルを Tkinter で表にして出力したい


テーブルの作り方は[テーブル（表）の作成方法（Treeview）](https://office54.net/python/tkinter/ttk-
treeview-table)が参考になるかと思います。

[code]

    import tkinter as tk
    from tkinter import ttk
    from tkinter import Frame
    from tkinter import Button
    from tkinter import LEFT
    import tkinter.filedialog as fd
    
    # ファイルの呼び出し
    path = fd.askopenfilename()
    
    # メインウィンドウの生成
    root = tk.Tk()
    root.title("表形式で出力")
    
    frame = Frame(root)
    
    # Treeviewの生成
    tree = ttk.Treeview(frame, columns=(1,2), show='headings', height=20)
    
    # 列の見出し設定
    tree.heading(1, text="1")
    tree.heading(2, text="2")
    
    i = 0
    # テキストファイルの読み込み
    with open(path, "r") as f:
        for line in f:
            tree.insert(parent='', index=i, iid=i, values=(line.split())) ### 修正
            i = i + 1
    ran = int(len(line) / 2)
    
    # ウィジェットの配置
    frame.pack()
    tree.pack(side=LEFT)
    scrollbar = tk.Scrollbar(frame, orient=tk.VERTICAL, command=tree.yview) ### 追加
    scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
    # button.pack()
    
    tk.mainloop()
    
[/code]

※ `scrollbar`は`NameError`が出ましたのでこちらでコードを追加しました。  
※ `button`は`NameError`が出ましたのでコメントアウトしました。


CC BY-SA 4.0
2022-12-14T11:02:08.650
92784
2022-12-14T11:02:08.650
39819
92769
answer