Tkinterで利用可能なフォントファミリの一覧を表示する方法
Tkinterのfontプロパティは、ウィジェットのデフォルトフォントをカスタマイズする際に最も有用なプロパティの一つです。これまでにもさまざまなフォントを目にし、ウィジェットで使用してきましたが、Tkinterライブラリでどのフォントが実際に使えるのかを推測するのは難しいことがあります。Python Tkinterはフォントの選択に関してやや厳格なため、利用可能なフォントを事前に把握しておくと便利です。
そこで本記事では、Tkinterライブラリで利用可能なすべてのフォントを一覧表示できるアプリケーションの作成方法を紹介します。
fontモジュールのインポート
fontライブラリを使用するには、まず環境にインポートする必要があります。以下のコードを実行してください。
from tkinter import font
アプリケーション作成の手順
フォント一覧アプリケーションを作成するには、主に以下の手順に従います。
関数を定義し、font.families()コンストラクタを使ってシステム上のフォントファミリのリストを取得します。
取得したすべてのフォントを反復処理し、Labelウィジェットに各フォント名をテキストとして指定しながら表示します。これにより、各ラベルがそのフォント自体で描画されます。
垂直スクロールバーを持つキャンバス(Canvas)を作成します。
キャンバス内部にフレーム(Frame)を作成し、その中にすべてのフォントを表示します。
マウスイベントをスクロールウィジェットにバインドし、フレーム内をスクロールできるようにします。
サンプルコード
#必要なライブラリをインポート
from tkinter import *
from tkinter import font
#tkinterフレームのインスタンスを作成
win = Tk()
win.geometry("750x350")
win.title('Font List')
#font-familyコンストラクタでフォントのリストを作成
fonts=list(font.families())
fonts.sort()
def fill_frame(frame):
for f in fonts:
#フォントを表示するラベルを作成
label = Label(frame,text=f,font=(f, 14)).pack()
def onFrameConfigure(canvas):
canvas.configure(scrollregion=canvas.bbox("all"))
#キャンバスを作成
canvas = Canvas(win,bd=1, background="white")
#キャンバス内にフレームを作成
frame = Frame(canvas, background="white")
#スクロールバーを追加
scroll_y = Scrollbar(win, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=scroll_y.set)
scroll_y.pack(side="right", fill="y")
canvas.pack(side="left", expand=1, fill="both")
canvas.create_window((5,4), window=frame, anchor="n")
frame.bind("<Configure>", lambda e, canvas=canvas: onFrameConfigure(canvas))
fill_frame(frame)
win.mainloop()実行結果
上記のコードを実行すると、Tkinterがサポートしている利用可能なフォントの一覧が表示されたウィンドウが出現します。各フォント名はそれぞれのフォントで描画されるため、見た目を直接確認しながら目的のフォントを選ぶことができます。

-
TkinterのCanvas(キャンバス)をクリアする方法を解説
Tkinterでは、ウィンドウ内にキャンバス(Canvas)を追加できます。キャンバスを作成すると、メモリ内部に描画データのためのストレージが確保されます。そのため、不要になったキャンバスの内容は、適切にクリアまたは削除してあげる必要があります。キャンバスをクリアするには、delete()メソッドを使用します。引数に「all」を指定することで、Tkinterフレーム上に存在するすべてのキャンバスアイテムを一括で削除し、画面をまっさらな状態に戻すことができます。サンプルコード# tkinterライブラリをインポート from tkinter import * # tkinterフレームのインス
-
Python Tkinterでキャンバス上の画像を中央に配置する方法
Tkinterを使ってGUIアプリケーションを開発している際、Tkinterのキャンバス(Canvas)上に画像を読み込みたいケースはよくあります。本記事では、その画像をキャンバスの中央に配置する方法を解説します。anchorパラメータとはデフォルトでは、キャンバスは画像を自身の幅と高さに従って配置します。しかし、anchor(アンカー)パラメータに方向の値を渡すことで、画像の位置を任意の方向(N:北、S:南、E:東、W:西、NS、EWなど)に操作できます。アンカーは画像関数と一緒に呼び出されるパラメータで、キャンバス内における画像の方向や位置を定義します。このanchorパラメータを活用すれ