﻿# -*- coding: utf-8 -*-
import Tkinter
import tkFont  # нужно для использования объектов Font (шрифт)!

root = Tkinter.Tk()

# Создание именованных шрифтов, считывание текущих значений по умолчанию
# (итак, если пользователи используют файлы с базой данных опций, их предпочтения будут учтены).
mainFontDescr = Tkinter.Button()["font"] # то же самое для элементов Label, Checkbutton, Menu...
entryFontDescr = Tkinter.Entry()["font"] # то же самое для элементов Text
mainFont = tkFont.Font(font=mainFontDescr)
entryFont = tkFont.Font(font=entryFontDescr)
# Формирование базы данных опций; убедитесь, что сначала задаются опции более общего характера.
root.option_add("*Font", mainFont)
root.option_add("*Entry*Font", entryFont)
root.option_add("*Text*Font", entryFont)

# Это черновой демонстрационный пример автоматического обновления шрифта
Tkinter.Label(root, text="Test Label").pack()
fontList = tkFont.families()
entryVar = Tkinter.StringVar()
entryVar.set(mainFont.cget("family"))
def setMainFont(varName, *args):
	mainFont.configure(family = root.getvar(varName))
entryVar.trace_variable("w", setMainFont)
mainMenu = Tkinter.OptionMenu(root, entryVar, *fontList)
mainMenu.pack()
root.mainloop()
