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

Tkinterのテキストウィジェットで入力文字数をリアルタイムに取得・表示する方法

TkinterのTextウィジェットは、ユーザーからの複数行にわたるテキスト入力をサポートしています。フォントの種類やサイズ、文字色、背景色といったプロパティは、configure()メソッドを使って自由に設定できます。

ここでは、テキストウィジェットに入力された現在の文字数をカウントして表示するアプリケーションの作り方を解説します。手順は以下の通りです。

  • Textウィジェットを作成し、width(幅)とheight(高さ)のプロパティを定義します。

  • 文字数の合計を表示するためのLabelウィジェットを用意します。

  • <KeyPress>イベントと<KeyRelease>イベントに関数をバインドし、キー入力のたびに最新の文字数がラベルに反映されるようにします。

  • イベントが発生するたびにラベルの設定が更新されるよう、関数内でラベルのconfigを呼び出します。文字数を表示する際は、text.get("1.0", "end-1c")で取得したテキストの長さをstr()で文字列に変換して指定します。なお、"end-1c"を指定することで、ウィジェットが自動的に挿入する末尾の改行文字を除外できます。

  • 各ウィジェットをpack()で配置し、アプリケーションを実行します。

サンプルコード

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

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

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

# 現在のテキストの長さを取得する関数を定義
def update(event):
    label.config(text="Total Characters: "+str(len(text.get("1.0", 'end-1c'))))

# テキストウィジェットを作成
text=Text(win, width=50, height=10, font=('Calibri 14'))
text.pack()

# ラベルウィジェットを作成
label=Label(win, text="", justify=CENTER, font=('11'))
label.pack()

# イベントと関数をバインド
text.bind('<KeyPress>', update)
text.bind('<KeyRelease>', update)

win.mainloop()

実行結果

上記のコードを実行すると、テキストエディタとその下部にラベルウィジェットが表示されます。テキストエディタに何かを入力するたびに、「Total Characters:」に続く文字数カウントがリアルタイムで更新されていきます。

Tkinterのテキストウィジェットで入力文字数をリアルタイムに取得・表示する方法

  1. Tkinterでテキストウィジェットを読み取り専用(無効化)にする方法

    Tkinterでは、テキストウィジェットを無効化(disabled)したいケースがあります。これを実現するには、テキストウィジェットの state オプションを DISABLED に設定します。こうすることでテキストウィジェットがフリーズし、読み取り専用の状態になります。この記事では、テキストウィジェットとボタンを作成し、ボタンをクリックするとテキストウィジェットを即座に無効化できるサンプルを紹介します。コード例# ライブラリのインポート from tkinter import * # ウィンドウのインスタンスを作成 win = Tk() # ウィンドウのサイズを設定 win.geomet

  2. Tkinterでウィジェットの現在のX・Y座標を取得する方法

    Tkinterは、PythonでGUIアプリケーションを開発するために広く利用されている標準ライブラリです。ボタン、テキストボックス、ラベルなど、さまざまなウィジェットが用意されており、これらを組み合わせることで直感的なユーザーインターフェースを構築できます。さらに、ウィジェットの配置位置や座標も、専用の関数やライブラリを使って柔軟にカスタマイズすることが可能です。ここでは、Tkinterフレーム上に配置したウィジェットの実際の座標を取得する方法を紹介します。ウィジェットの正確な座標を知りたい場合には、Tkinterライブラリが提供するgeometry(ジオメトリ)関連のメソッドを活用します。