python tkinter フォント(font)の設定方法
python tkinter フォント(font)の設定方法
tkinterのフォントの設定について整理する。
tkinterでは、フォントタイプ、サイズ、太字、斜体、取消線の設定が可能だ。
参考ページ(英語):http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/fonts.html
フォントオプションの設定
各ウィジェットのほとんどで、フォントオプションを設定でき、各項目をタプルで設定する。(familyは必須。それ以外は、オプション)
(family[,size,weight,slant,under,overstrike])
family | フォントタイプ |
size | サイズ |
weight | "normal":通常(デフォルト) "bold":太字 |
slant | "roman":通常(デフォルト) "italic":斜体 |
underline | "normal":通常(デフォルト) "underline":下線あり |
overstrike | "normal":通常(デフォルト) "overstrike":取消線あり |
フォントの変更例
※python3で作成(python2ではモジュール名をTkinterとする)
import tkinter as tk root = tk.Tk() # familyのみ変更 button1 = tk.Button(root, text="family", font=("System")) button1.pack() # sizeのみ変更 button2 = tk.Button(root, text="size", font=("",20)) button2.pack() # overstrikeのみ変更 button3 = tk.Button(root, text="overstrike", font=("",0,"normal","roman","normal","overstrike")) button3.pack() root.mainloop()
フォントオブジェクトによる設定
フォントオブジェクトというものを新規に作成することもできる。
※python3で作成
import tkinter as tk import tkinter.font as font root = tk.Tk() # my_fontというフォントオブジェクトを新規に作成 my_font = font.Font(root,family="System",size=20,weight="bold") # fontオプションでmy_fontを設定する button = tk.Button(root,text="font",font=my_font) button.pack() root.mainloop()
※python2ではモジュール名を以下のようにする
import Tkinter as tk import tkFont as font
tkinterで使用可能なフォントタイプ(family)の確認方法
font.familiesメソッドで確認できる
※python3で作成(python2では前述のとおりモジュール名を変更する)
# -*- coding:utf-8 -*- import tkinter as tk import tkinter.font as font root = tk.Tk() print(font.families())
コンソール上に、現在の環境で使用可能なフォントタイプ(family)が表示される。
おまけ
colorの設定でも同じことをやったが、fontでもやってみた。
※python3で作成
# -*- coding:utf-8 -*- import tkinter as tk import tkinter.font as font class FontChart(tk.Frame): MAX_ROWS = 36 FONT_SIZE = 8 def __init__(self, root): tk.Frame.__init__(self, root) r = 0 c = 0 for color in FONTS: label = tk.Label(self, text=color, font=(color, self.FONT_SIZE, "bold")) label.grid(row=r, column=c, sticky="ew") r += 1 if r > self.MAX_ROWS: r = 0 c += 1 self.pack(expand=1, fill="both") if __name__ == '__main__': root = tk.Tk() root.title("Named Font Chart") FONTS = list(font.families(root)) app = FontChart(root) root.mainloop()
なお、ttkのfontについては、styleで変更しなければならない。
ttk Treeview Headingのfontを変更する方法 - memopy