有一种比
.config()用于更改应用程序字体的方法更好的方法,特别是如果您的目标是更改整个小部件(或所有小部件)的字体时,则尤其如此。
Tk真正的一大特色是“命名字体”的概念。命名字体的优点是,如果您更新字体,则使用该字体的所有小部件都会自动更新。因此,只需配置一次小部件以使用这些自定义字体,然后更改属性就变得微不足道了。
这是一个简单的例子:
try: import Tkinter as tk import tkFont# import ttk # not used hereexcept importError: # Python 3 import tkinter as tk import tkinter.font as tkFont# import tkinter.ttk as ttk # not used hereclass App: def __init__(self): root=tk.Tk() # create a custom font self.customFont = tkFont.Font(family="Helvetica", size=12) # create a couple widgets that use that font buttonframe = tk.frame() label = tk.Label(root, text="Hello, world", font=self.customFont) text = tk.Text(root, width=20, height=2, font=self.customFont) buttonframe.pack(side="top", fill="x") label.pack() text.pack() text.insert("end","press +/- buttons to changenfont size") # create buttons to adjust the font bigger = tk.Button(root, text="+", command=self.OnBigger) smaller = tk.Button(root, text="-", command=self.OnSmaller) bigger.pack(in_=buttonframe, side="left") smaller.pack(in_=buttonframe, side="left") root.mainloop() def onBigger(self): '''Make the font 2 points bigger''' size = self.customFont['size'] self.customFont.configure(size=size+2) def onSmaller(self): '''Make the font 2 points smaller''' size = self.customFont['size'] self.customFont.configure(size=size-2)app=App()
如果您不喜欢这种方法,或者希望将自定义字体基于默认字体,或者只是更改一种或两种字体来表示状态,则可以使用
font.actual来获取该字体的实际大小给定的小部件。例如:
import Tkinter as tkimport tkFontroot = tk.Tk()label = tk.Label(root, text="Hello, world")font = tkFont.Font(font=label['font'])print font.actual()
当我运行上面的代码时,我得到以下输出:
{'family': 'Lucida Grande', 'weight': 'normal', 'slant': 'roman', 'overstrike': False, 'underline': False, 'size': 13}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)