Python でテーブル(表)を GUI 表示するサンプルです。必要最小限の知識のみで動くよう記載しています。使う場合は、コピー&ペーストして for 文のあたりを差し替えてください。
環境: Windows 10, Python 3.x, Anaconda 環境で動作確認をしています。
使い方: テーブル(表)を表示するサンプル
① table1.py 等のファイルを作り、下記のサンプルコードをコピー&ペーストして、コマンドプロンプトから実行してください。
② データは for 文のあたりで生成しています。動いたら for 文のあたりを書き換えて/差し替えてみて、使いたいように修正してください。
※ 行、列の定義、データ挿入、スクロールバー、という、表を扱うにあたり必要最小限となる要素についてまとめたサンプルコードにしています。
解説:ttk → TreeViewを使う
・ 最初に tkinter をインポートして、GUI 画面となる frame1 をまず作ります。
・ 次に表(tree1)を定義し、列の数(4列)を定義します。テーブルを使う場合は、ttk をインポートしておき、ツリービュー Treeview を使うというところがポイントです。ボタンなど、他のウィジェットとは使い方が異なります。
・ columns, column としているところで列を定義しています。
列の数を増減したい場合は、動作確認後に修正してみてください。
・ 列の幅 (width=100) を設定し、表の1行目のヘッダーの文字を設定します。
・ 行数(rows1)分、for ループを回して、insert で各行の値を設定します。
データを差し替えたい場合は、この for ループの部分を作り変えてみてください。
・ 縦向きのスクロールバー(vbar1) を定義します。
・ place( … ) のところで、表とスクロールバーの位置を調整しています。
GUI のサイズや位置関係は、このあたりの数値を調整してください。
・ 最後に、frame1.mainloop() として、画面(frame1)を GUI 表示(繰り返し表示)します。
赤のアンダーライン部分は、他のボタンやテキストボックスでも同様ですので、流れが把握できたら、他にも応用が広がると思います。
まとめ
Python で表(テーブル)を表示する方法について、必要最小限の知識で済むサンプルをまとめました。名簿など自由に表示できるようになると思います。
tkinter については、テキストボックスとボタン等についてもソースコードを作っています。今回の表を加えると、最小限の知識で GUI を作成できると思います。
なお、グラフやフォルダの内容を表示したい場合などについても、以下で解決すると思います。
関連リンク
・ tkinter テキストボックスとボタン サンプルコード
・ グラフを表示する 【matplotlib & Python】
・ フォルダビューアの作り方 【Python, tkinter】
・ 指定範囲を繰り返し再生するプレーヤー【Python】
・ おすすめ書籍ベスト4 【Python&機械学習】
サンプルコード:TreeView テーブルの表示
import tkinter as tk1
import tkinter.ttk as ttk1
frame1 = tk1.Tk() # frame1
frame1.title( 'tkinter table' )
frame1.geometry( "450x230" )
tree1 = ttk1.Treeview( frame1 )
tree1["columns"] = ( 1, 2, 3, 4 ) # columns
tree1["show"] = "headings" # normal table
tree1.column( 1, width=100 ) # width of column
tree1.column( 2, width=100 )
tree1.column( 3, width=100 )
tree1.column( 4, width=100 )
tree1.heading( 1, text="x" ) # header index
tree1.heading( 2, text="y(x)=x^2" )
tree1.heading( 3, text="y(x)=x^3" )
tree1.heading( 4, text="y(x)=x^4" )
rows1 = 10
for i1 in range( rows1 ):
tree1.insert( "", "end", tag=0, values=[i1, i1**2,i1**3, i1**4] )
vbar1 = ttk1.Scrollbar( frame1, orient = 'v', command = tree1.yview )
tree1.configure( yscrollcommand = vbar1.set )
tree1.pack( side = tk1.LEFT )
tree1.place( x = 15, y = 15, height = 200 )
vbar1.pack( side = tk1.LEFT, fill = tk1.Y )
vbar1.place( x = 420, y = 15, height = 200 )
frame1.mainloop()