Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Tkinter:テキストウィジェットでテーブル(表)を表示・編集する方法

Tkinterは、Pythonに標準で付属しているGUIツールキットです。豊富なモジュールとクラスライブラリが用意されており、開発者はユーザーフレンドリーなデスクトップアプリケーションを素早く簡単に構築できます。

TkinterのTextウィジェットは、複数行のテキスト入力を受け付けるテキストエディタを作成するためのウィジェットです。プロパティや属性を自由に設定・カスタマイズできます。

ここでは、Textウィジェットだけを使って2次元データを表形式(テーブル)で表示する方法を紹介します。Textウィジェット内にテーブルを作成するには、まず表示したいデータを格納した2次元配列(リスト)を用意します。

実装の手順

  • 必要なライブラリをインポートします。
  • 行と列からなるデータを持つ2次元配列を作成します。
  • 各行・各列をループ処理し、セルごとにTextウィジェットを生成します。
  • grid(row, column)ジオメトリマネージャーを使用して、データを行と列のグリッド状に配置します。
  • 配列のデータを各Textウィジェットに挿入します。
  • コードを実行して結果を確認します。

サンプルコード

# 必要なライブラリをインポート
from tkinter import *

# tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウサイズを設定
win.geometry("700x350")

# 表示する2次元配列(テーブルデータ)
array = [("1","2","3","4","5", "6", "7"),
         ("Sun","Mon","Tue","Wed","Thu", "Fri", "Sat"),
         ("aaa","acc","add","aee","abb", "abd", "acd"),
         ("A","B","C","D","E","F","G")]

# 各セルにTextウィジェットを作成してデータを挿入
for x in range(4):
    for y in range(7):
        text = Text(win, width=10, height=5)
        text.grid(row=x, column=y)
        text.insert(END, array[x][y])

win.mainloop()

実行結果

上記のコードを実行すると、行と列に区切られた表形式のTextウィジェットが表示されます。各セルは独立したTextウィジェットとして動作するため、表示後も内容の編集やスタイルのカスタマイズが可能です。

Python Tkinter:テキストウィジェットでテーブル(表)を表示・編集する方法

応用のポイント

この手法では、各セルが独立したTextウィジェットになっているため、セルごとにフォントや背景色を変えたり、編集可否を制御したりすることもできます。より高度な表形式のUIが必要な場合は、ttk.Treeviewウィジェットや外部ライブラリのtksheetを検討するとよいでしょう。

  1. Tkinterでテキストウィジェットにスクロールバーを追加する方法

    Tkinterのテキストウィジェット(Text Widget)は、複数行にわたるユーザー入力を受け付けるためのウィジェットです。エントリーウィジェット(Entry Widget)とよく似ていますが、最大の違いはテキストウィジェットが複数行のテキスト入力をサポートしている点にあります。テキストウィジェットを作成するには、まずテキストオブジェクトをインスタンス化します。 複数行のテキストを扱う場合、内容がウィジェットの表示領域を超えることがあるため、スクロールバーの追加が不可欠です。テキストウィジェットにスクロールバーを追加するには、ScrolledText(root) 関数を使用します。この関数

  2. Tkinterで複数行入力に対応したエントリウィジェットを作成する方法

    Tkinterでは、標準の Entry ウィジェットは1行のみの入力しかサポートしていません。そこで、ユーザーが複数行のテキストを入力できるエントリウィジェットを作成したい場合は、Text() コンストラクタを使用します。Textウィジェットは複数行入力はもちろん、スクロールや文字装飾など、より高度なテキスト編集機能も備えています。サンプルコード以下の例では、複数行入力に対応したTextウィジェットを含むウィンドウを作成しています。#Import the library from tkinter import * #Create an object of tkinter window or