Tkinter

[Python/tkinter] tk.fontでフォント(フォント、下線、斜体など)を設定してみよう!

tkinterで配置するテキストは、fontオブジェクトを使用することで下図のように文字のフォントサイズだけでなく様々な詳細オプションを指定することができます。

すらいむ

こんな感じで書体アンダーバーなどを設定できます!

font-image1

本記事では、fontの使い方を分かりやすく解説していきます

プログラミングを効率的に学びたい方は口コミで人気の優良プログラミングスクールを徹底解説していますので参考にしてみてください!

学生や30代の方にもおすすめなプログラミングスクールがあります

fontオブジェクトで設定できるオプション

fontオプションで設定できるオプション一覧は以下のようになっています。

オプション 変更箇所
family 文字のフォントを指定
size フォントサイズを指定
weight

“normal”:デフォルトの太さにする場合
“bold”:太字にする場合

slant “roman”:デフォルトのまま
“italic”:斜体にする場合
underline “False” or “0”:下線なし
“True” or “1”:下線あり
overstrike “False” or “0”:取消線なし
“True” or “1”:取消線あり

フォントの指定方法

tkinterでフォントを変更したい場合には、tk.font.Font() を使用します。
使い方としては、まず初めにtkinter.fontをインポートします。

import tkinter.font as font

次にtk.font.Font()の引数として、先ほど表で示したオプションを任意の数だけ指定した型を作成します。(下記は、フォント、下線、斜体を指定する場合の引数)

インスタンス名=tk.font.Font ( family="MS Gothic" , underline = True , slant = "italic" )

その後、作成した型をフォント設定を変更したいウィジェットの引数として font= “作成した型名” を定義することで変更できます!

実際のプログラム

では実際にプログラムを書いてみましょう~!
変更する場合は以下のように記載します。

今回はフォントに「Ink Free」というフォントを選択し、下線斜体を適用してみます!

import tkinter as tk
import tkinter.font as font

def main(root):
    #文字に適用したいフォントの型を作成
    myfont=tk.font.Font(family="Ink Free",underline=True,slant="italic")
    #作成した型をラベルに当てはめる
    label=tk.Label(root,text="Good Morning!",font=myfont)
    label.pack()

if __name__ == '__main__':
    root = tk.Tk()
    main(root)
    root.mainloop()

(実行結果)

font-image2

(参考:通常、何も指定していない場合のフォントは以下のようになっています。)

font-image3

また、余談ですが取消線を指定した場合はこのように表示されます!

myfont = tk.font.Font ( family="Ink Free" , overstrike = True )

font-image4

フォントの一例

他にもいくつかフォントを紹介してみます!
すべて「Good Morning!」を表示させています。

font-image5
font-image6
font-image7
font-image8

このような形で、フォントを色々と変えることができます!

最後の「Wingdings 3」を使うと文字化けしたような記号で表示されます(笑)

すらいむ管理人

他にも様々なフォントがあるのでデザインに合わせて適切なものを選択して使ってください~!
どのような種類があるかは次の段落で説明していきます!

familyで指定できるfontの種類

先ほども述べたように、フォントは非常に多くの種類があります。その一部を下図に示します。
下記に示したプログラムをコピーして実行してみて下さい!

そして出力されたフォントから是非お気に入りのものを選択し、実際に利用してみて下さい!

font-image9

余談ではありますが、フォントを全て表示させるためのプログラムはこんな感じです!

import tkinter as tk
import tkinter.font as font

def main(root):
    row_max = 36
    tk.Frame(root)
    r = 0
    c = 0
    for color in FONTS:
        label = tk.Label(text=color,
                         font=(color,8, "bold"))
        label.grid(row=r, column=c, sticky="ew")
        r += 1
        if r > row_max:
            r = 0
            c += 1
    print(FONTS)

if __name__ == '__main__':
    root = tk.Tk()
    root.title("Named Font Chart")
    FONTS = list(font.families(root))
    main(root)
    root.mainloop()

フォントを一覧から選択したい場合

フォントの一覧を表示させて、任意のフォントを選択して変更できるようにする方法をこちらの記事で紹介しています!

是非参考にしてみてください!

[Python/Tkinter] テキストのフォントを一覧から取得する方法!tkinterのGUI上に表示されたテキストのフォントを、リスト一覧から取得して変更できるようにする方法を紹介しています!...

テキストにリンクを付けたい場合

別記事で、テキストラベルにリンクを付ける方法も解説していますので是非参考にしてみて下さい!

[Python/tkinter] テキストラベルにリンクをつける方法本記事では、テキストラベルにリンクを貼り付ける方法やlambda式の用法を分かりやすく解説しています!...

以上となります。最後まで見ていただきありがとうございました!