35

Tkinter を使用して Python2.7 で GUI を作成していますが、厄介な問題があります。

可能であれば、すべてのウィジェットで使用されるデフォルトのフォントを 1 行で定義したいと考えています。この行は、Entry または ComboBox で使用されるフォントのみを変更します。

root.option_add("*Font", "courier 10")

例によるチェックボックスのラベルではありません。

定義済みのフォント「TkDefaultFont」が存在することがわかりましたが、その構成を変更できません。

print tkFont.Font(font='TkDefaultFont').configure()
tkFont.Font(font='TkDefaultFont').config(family='Helvetica', size=20)
tk.TkDefaultFont = tkFont.Font(family="Helvetica",size=36,weight="bold")
print tkFont.Font(font='TkDefaultFont').configure()

戻る :

{'family': 'DejaVu Sans', 'weight': 'normal', 'slant': 'roman', 'overstrike': 0, 'underline': 0, 'size': -12} {'family': 'DejaVu Sans', 'weight': 'normal', 'slant': 'roman', 'overstrike': 0, 'underline': 0, 'size': -12}

(エラーはありませんが、何も変わりません!!)

私が間違っていることは何ですか?

4

2 に答える 2

51

Tkinter にはTkDefaultFontTkTextFontTkFixedFont、 などの組み込みフォントがいくつかあります。これらはすべて「名前付きフォント」と呼ばれるものです。これらは非常に強力です。これらの 1 つを変更すると、それらを使用するすべてのウィジェットも変更されます。

これらのフォントのいずれかを変更するには、そのハンドルを取得し、configureメソッドを使用して変更します。たとえば、 のサイズTkDefaultFontを 48 に変更するには、次のようにします。

default_font = tkFont.nametofont("TkDefaultFont")
default_font.configure(size=48)

それでおしまい。他に何もする必要はありませんTkDefaultFont

TkDefaultFontあなたの質問では、フォントをすべてで使用したいことを暗示しています。これを行うには、次option_addのように使用できます。

root.option_add("*Font", default_font)

ただし、これは を呼び出したoption_addに作成されたウィジェットにのみ影響するため、他のウィジェットを作成する前に行う必要があることに注意してください。option_add

option_addまた、最初にフォント インスタンスを取得することを気にしたくない場合は、フォント名を指定できることにも注意してください(つまり: root.option_add("*Font", "TkDefaultFont"))。

于 2013-03-17T16:58:02.660 に答える