Tkinterを使ったシンプルなテキスト情報カウンターアプリの作成

プログラミング

皆さん、こんにちは!
伝えたい情報量をある程度絞り込む必要がある場面てよくありますよね?
例えば、アンケートやレポート、またSNSやブログなど。そんな時に使える簡単なテキスト情報カウンターアプリを作成したのでご紹介します。
このアプリでは、テキストボックスに入力されたテキストの文字数や行数、段落数をリアルタイムで表示します。プログラミング初心者の方でも理解しやすいよう、詳しく説明していきます。

必要なツールと環境

Pythonに標準で付属しているTkinterライブラリを使用するので、Pythonがインストールされていれば、特別なインストールは必要ありません。

Tkinterとは?

Tkinterは、PythonでGUI(Graphical User Interface)を作成するための標準ライブラリです。これを使うことで、簡単にデスクトップアプリケーションを作成することができます。Tkinterは軽量で、Pythonの標準ライブラリの一部として提供されているため、追加のインストールなしで使えます。

プロジェクトの概要

今回作成するアプリケーションは以下のような機能を持っています:

  • テキストボックスにテキストを入力
  • 入力されたテキストの文字数(スペース込み・抜き)、行数、段落数をリアルタイムで表示

これらの機能を実現するために、Tkinterの Text ウィジェットと Label ウィジェットを使用します。また、入力が行われるたびに情報を更新するため、イベントバインドを活用します。

コードの実装

では、実際にコードを書いていきましょう。

import tkinter as tk
from tkinter import ttk

# 情報を計算して結果をラベルに表示する関数
def update_info(event=None):
    text = text_input.get("1.0", "end-1c")  # テキストボックスからテキストを取得
    characters_with_spaces = len(text)  # スペース込みの文字数
    characters_without_spaces = len(text.replace(" ", "").replace("\n", ""))  # スペース抜きの文字数
    lines = text.count("\n") + 1 if text else 0  # 行数
    paragraphs = text.count("\n\n") + 1 if text else 0  # 段落数
    
    # 結果をラベルに表示
    info_label.config(text=f"文字数(スペース込み): {characters_with_spaces}\n"
                           f"文字数(スペース抜き): {characters_without_spaces}\n"
                           f"行数: {lines}\n"
                           f"段落数: {paragraphs}")

# メインウィンドウを作成
root = tk.Tk()
root.title("テキスト情報カウンター")

# テキスト入力用のテキストボックスを作成
text_input = tk.Text(root, height=10, width=50)
text_input.pack(padx=10, pady=10)

# 情報を表示するラベルを作成
info_label = ttk.Label(root, text="文字数(スペース込み): 0\n文字数(スペース抜き): 0\n行数: 0\n段落数: 0")
info_label.pack(pady=10)

# テキストボックスにテキストが挿入されたり、削除されたりした際に情報を更新
text_input.bind("<KeyRelease>", update_info)

# メインループを開始
root.mainloop()

コードの説明

ここでは、上記のコードをパートごとに分解して説明します。

1. Tkinterライブラリのインポート

import tkinter as tk
from tkinter import ttk

まず、Tkinterとttk(テーマ付きTkinter)のライブラリをインポートします。tkinter は主にウィジェットを作成するために使用され、ttk はよりモダンな外観のウィジェットを提供します。

2. テキスト情報を計算する関数 update_info

def update_info(event=None):
    text = text_input.get("1.0", "end-1c")
    characters_with_spaces = len(text)
    characters_without_spaces = len(text.replace(" ", "").replace("\n", ""))
    lines = text.count("\n") + 1 if text else 0
    paragraphs = text.count("\n\n") + 1 if text else 0
    
    info_label.config(text=f"文字数(スペース込み): {characters_with_spaces}\n"
                           f"文字数(スペース抜き): {characters_without_spaces}\n"
                           f"行数: {lines}\n"
                           f"段落数: {paragraphs}")

この関数は、テキストボックスから入力されたテキストを取得し、文字数(スペース込み・抜き)、行数、段落数を計算します。計算結果はラベル (info_label) に表示されます。

3. メインウィンドウの作成とウィジェットの配置

root = tk.Tk()
root.title("テキスト情報カウンター")

text_input = tk.Text(root, height=10, width=50)
text_input.pack(padx=10, pady=10)

info_label = ttk.Label(root, text="文字数(スペース込み): 0\n文字数(スペース抜き): 0\n行数: 0\n段落数: 0")
info_label.pack(pady=10)

ここでは、メインウィンドウを作成し、その中にテキストボックスとラベルを配置しています。

4. イベントバインド

text_input.bind("<KeyRelease>", update_info)

この行は、テキストボックスでキーが押されたり離されたりするたびに update_info 関数を呼び出すための設定です。これにより、テキスト情報がリアルタイムで更新されます。

5. メインループの開始

root.mainloop()

最後に、root.mainloop() を呼び出すことで、アプリケーションのメインループが開始され、ウィンドウが表示されます。

実行結果

コードを実行すると、以下のようなウィンドウが表示されます。

  • テキストボックスにテキストを入力するたびに、文字数、行数、段落数がリアルタイムで更新されます。

まとめ

今回の記事では、PythonのTkinterライブラリを使用して、シンプルなテキスト情報カウンターアプリを作成する方法を紹介しました。このようなアプリケーションは、文章作成やテキストデータの処理を行う際に非常に便利です。ぜひ、この記事を参考にして作ってみてください。

それでは、また次回の記事でお会いしましょう!



コメント

タイトルとURLをコピーしました