Tkinterのキャンバステキストにアウトラインを追加する方法
TkinterのCanvasウィジェットは、画像の追加、キャンバス上での図形の作成・描画、図形やオブジェクトのアニメーションなど、さまざまな用途に活用できます。Canvasが提供する組み込み関数やメソッドを使えば、テキストを作成して表示することも可能です。
キャンバス上にテキストを作成するには、create_text(x, y, text, **options)メソッドを使用します。キャンバス内のテキストにアウトライン(外枠)を追加したい場合は、テキストを囲むバウンディングボックス(境界ボックス)を作成する必要があります。バウンディングボックスは、目に見えないボックスとウィジェットを関連付ける仕組みで、これによりテキストの周囲に矩形を配置できるようになります。
矩形を作成したら、それをテキストの背面に移動し、テキストが矩形より手前に表示されるようにします。このとき、矩形にはキャンバスアイテムを囲むためのoutlineプロパティを指定しておく必要があります。
コード例
# 必要なライブラリをインポート
from tkinter import *
# tkinterフレームまたはウィンドウのインスタンスを作成
win = Tk()
# ウィンドウサイズを設定
win.geometry("700x350")
# Canvasウィジェットを作成
canvas = Canvas(win, bg="blue3")
canvas.pack()
# キャンバス上にテキストを作成
text = canvas.create_text(100, 200, text="This works only in canvas",
font=('Calibri 18'), anchor="w", fill="white")
# テキストの周囲にバウンディングボックスを取得
bbox = canvas.bbox(text)
# バウンディングボックス内に矩形を作成
rect = canvas.create_rectangle(bbox, outline="yellow",
fill="black", width=5)
# テキストを矩形より手前に表示
canvas.tag_raise(text, rect)
win.mainloop()実行結果
上記のコードを実行すると、キャンバス上にあらかじめ設定されたテキストが表示されたウィンドウが開きます。テキストの周囲には、黄色いアウトライン(枠線)が描画されていることが確認できます。
-
Tkinterでラベルのテキストを取得する方法を解説
TkinterのLabel(ラベル)ウィジェットは、ウィンドウ上にテキストや画像を表示するために使用される基本的なコンポーネントです。フォントファミリーやパディング、幅・高さなどのオプションを指定することで、ラベルの見た目を自由にカスタマイズできます。ラベルに設定したテキストを取得したい場合は、ラベルウィジェットに対して [text] を指定するだけで、簡単にその値へアクセスできます。以下に具体的なサンプルコードを示します。サンプルコード# 必要なライブラリをインポート from tkinter import * # tkinterフレームのインスタンスを作成 win = Tk() # ウ
-
Tkinterでボタンのテキストサイズをウィンドウに合わせて動的に変更する方法
Tkinterのフレーム内にボタンを作成した際、ボタンのテキストをメインウィンドウのサイズに合わせて動的に拡大・縮小させたいケースはよくあります。ボタン自体はButtonウィジェットを使えば簡単に作成できますが、テキストサイズを動的に変化させるには、いくつかの機能を組み合わせる必要があります。この記事では、テキスト付きのボタンを作成し、Gridメソッドのrowconfigure()とcolumnconfigure()を使って、メインウィンドウ(ルートウィンドウ)のリサイズに追従できるようにする方法を解説します。bind(<Configure>)でイベントを結び付けるボタンのテキスト