Tkinter Text family参数
family用于设置Text文字区域的字形,下面将以实例说明此参数对于文字区域字形的影响。
示例1
建立一个Text文字区域,然后在上方建立一个OptionMenu对象,在这个对象内建立了Arial、Times、Courier三种字形,其中,Arial是默认的字形,用户可以在Text文字区域输入文字,然后选择字形,可以看到所输入的文字将因所选择的字形而有不同的变化。
from tkinter import *
from tkinter.font import Font
def familyChanged(event): # font family更新
f=Font(family=familyVar.get()) # 取得新的fong family
text.configure(font=f) # 更新text的font family
root = Tk()
root.title("apidemos.com")
root.geometry("300x180")
# 建立font family OptionMenu
familyVar = StringVar()
familyFamily = ("Arial","Times","Courier")
familyVar.set(familyFamily[0])
family = OptionMenu(root,familyVar,*familyFamily,command=familyChanged)
family.pack(pady=2)
# 建立Text
text = Text(root)
text.pack(fill=BOTH,expand=True,padx=3,pady=2)
text.focus_set()
root.mainloop()
输出:
这个程序中的第13~18行,有关建立OptionMenu对象的内容可以参考Tkinter OptionMenu Tutorial;
第21~23行,有关建立Text文字区域的内容可参考前几节的叙述。对读者而言最重要的是第6行,可以取得所选择的font family,然后在第7行设置让Text文字区域使用此字形。
示例2
上述程序实例所使用的OptionMenu是使用tkinter的Widget,如果使用tkinter.ttk将看到不一样的外观
from tkinter import *
from tkinter.ttk import *
from tkinter.font import Font
def familyChanged(event): # font family更新
f=Font(family=familyVar.get()) # 取得新的fong family
text.configure(font=f) # 更新text的font family
root = Tk()
root.title("apidemos.com")
root.geometry("300x180")
# 建立font family OptionMenu
familyVar = StringVar()
familyFamily = ("Arial","Times","Courier")
familyVar.set(familyFamily[0])
family = OptionMenu(root,familyVar,*familyFamily,command=familyChanged)
family.pack(pady=2)
# 建立Text
text = Text(root)
text.pack(fill=BOTH,expand=True,padx=3,pady=2)
text.focus_set()
root.mainloop()
输出: