2013-03-17 586 views
15

私はPython2.7のGUIでTkinterを使って作業していますが、厄介な問題があります。Python Tkinterのデフォルトフォントを変更します

可能であれば、すべてのウィジェットで使用されるデフォルトのフォントを1行に定義したいと思います。例で

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

ではなく、チェックボックスのラベル: この行は唯一のエントリで使用するフォント、またはコンボボックスを変更します。

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() 

リターン:

{ '家族': 'そしてDejaVuなき'、 '

私は事前に定義されたフォントが "TkDefaultFontを" 存在するが、私はその設定を変更することができませんでしだことがわかりました0 '、' underline ':0、' size ':-12} {'家族 ':' DejaVu Sans '、' weight ':' 0、 '下線':0、 'サイズ':-12}

(エラーはありませんが、変更はありません!!)

私は間違っていますか?

答えて

24

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

これらのフォントのいずれかを変更するには、そのフォントを取得してconfigureメソッドを使用して変更します。それだけです

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

:たとえば、あなたがこれを行うだろうTkDefaultFont 48のサイズを変更します。 TkDefaultFontを使用するものはすべて、変更をすぐに認識します。

ご質問では、TkDefaultFontフォントをすべて使用することを意味します。あなたがoption_addを使用することができますが示されてきたように実行します。しかし

root.option_add("*Font", default_font) 

注意を、option_addだけあなたがoption_addと呼ばれてきました後を作成したウィジェットに影響を与えることを、あなたが他のウィジェットを作成する前にそれを行う必要があるので、 。

フォントインスタンスを最初に取得することを嫌う場合は、フォント名をoption_addにすることもできます(つまり、root.option_add("*Font", "TkDefaultFont"))。

+0

完璧に...!私はこれ以上3時間以来これと戦っていた。お互いに感謝します – ericc

+1

前に 'nametofont'メソッドについて知っていることはありませんでした。私は、Tkinterの主な問題は、完全に文書化されていないように見えるほど多くの問題がライブラリの問題ではないと感じています。 'tkFont'がドキュメントに存在するが、それが何を含んでいるのか、それがどのように動作するのかについて何も言わないという合格の言葉があります。 – ArtOfWarfare

+0

これをファイルとして設定する方法 –

関連する問題