CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
今回も「いちばんやさしいPython入門教室(大澤 文孝氏著) 」を片手に勉強していきます。
さて、ヒット&ブローのプログラムが完成したため、画面作りに入りました。画面作りにはtkinterというPythonの標準GUIツールキットを使用していきます。
前回はテキスト入力エリアとボタンといったウィジェットを配置する方法として、[pack]、[grid]、[place]の3つを学習しました。
今回はフォントと文字サイズ、色の変更について学習します。
前回、packやgridについても学習していますが、テキスト的にはplaceを使っています。
いま出来上がっている画面はこんな感じ。
[place]の場合、ウィジェットの配置は座標(横軸がx、縦軸がy)で指定されますので、配置決めまでがちょっと面倒ですが、細かく指定したい場合にはちょうど良く配置できます。
最終的に完成するのは上の画面の横にユーザーが入力した履歴と、その履歴に対してヒットとブローの数を表示する画面がくっついてきます。
[grid]と[pack]について振り返りたい方は前回のコラムをご参照下さい。
さて、上の画像では特にフォントや文字サイズを指定していません。指定する方法はどうやっていけばいいのでしょうか。
引用-----
P.164
やり方は、Labelメソッドの一番後ろに「font =(”フォント名”,フォントサイズ)」という引数を追加します。例えば、次のようにします。
>>> label1 = tk.Label(root, text=”数を入力してね”, font=(“Helvetica”,14))
この例だと「Helvetica」というフォントで、「14ポイント」というサイズを指定したことになります。
(中略)
指定できるフォントは、標準では次の3種類です。
・Times(明朝体っぽいもの)
・Helvetica(ゴシック体っぽいもの)
・Courier(等幅のタイプライタのようなもの)
これ以外に、「MSゴシック」などパソコンにインストールされているフォントを指定することもできます。
フォント名は大文字、小文字、全角、半角、空白の有無などを区別するので注意してください。
-----
ということで、まずサンプルコードを実行してみました。
確かに文字が大きくなってフォントも変わっていますね。
ちなみに斜体や取消線などのオプションを使えるそうです。
<使えるオプション>
各項目で指定できるのは次の表になります。
オプション |
指定できる内容 |
family |
フォント名(大文字、小文字、スペースなどは相違なく指定) |
size |
文字サイズ(値で指定) |
weight |
太 字: “bold” |
slant |
斜 体: “italic” |
underline |
下 線: “underline” |
overstrike |
取消線: “overstrike” |
※「””」で囲まないとエラーになるので、囲むのを忘れないようにしましょう。
<指定する方法>
上の表に書いた各オプションを設定する方法は次の通りです。
例:tk.Lavel(root,text=”テキスト”, font=(“family”,size,weight,slant,under,overstrike))
フォント名以外は必須ではないので省略できます(通常のままでよく、省略しないのなら”normal”と書きます)。ただ、順番が違う(sizeの前にunderlineを配置するとか)とエラーになりました。
せっかくなので、フォント違いの文字と、オプションを使った場合をラベルで試して並べてみました。それが次の画像。文字サイズはすべて10にしています。
上のように各ウィジェットの設定内でオプションを使えば、それぞれを違うフォントで表現できますが、実際のところ、各ウィジェットで変える必要がないのがほとんどだと思います。一括で設定するには次のように書いてあげればいいそうです。
>>> import tkinter.font
>>> font = tkinter.font.Font
tkinter.fontをインポートしてあげた後、tkinter.font.Fontを使って、一括で指定したいフォントの情報を書くということになります。(詳しい書き方のイメージは後であげる図をご確認下さい。)
また、オプションで書いた時と同様、下線や取消線、太字、斜体なども指定することが可能です。
が、書き方が変わるようです。
項目 |
オプションで書く場合 |
tkinter.font.Fontで書く場合 |
フォント指定 |
“フォント名” |
family =”フォント名” |
文字サイズ |
値 |
size = 値 |
太字 |
“bold” |
weight = “bold” |
斜体 |
“italic” |
slant = “italic” |
下線 |
“underline” |
underline = True |
取消線 |
“overstrike” |
overstrike = 1 |
というわけで、上で作ったものを変えてみました。赤線を引いた部分が変更した部分です。
ここではフォントと文字サイズのみ指定しています。
一括で指定した書式を適用したいウィジェットには[ font = font ]を追加してあげると適用されます。
フォントにはTimesを指定し、文字サイズは10に統一しました。ちゃんと上の6つの項目は同じ字体(Times)で表現されているのがわかりますね。
下の4つはオプションをそのまま生かしています。[font=font]を追加せず、オプションを入れてあげれば、個別に設定することができます。
ラベルやボタンの文字色や、ボタンの色、ウィンドウの背景色を変える方法も探してみました。
各ウィジェットの設定に、[foreground="色"]を追加してあげます。
ボタンの背景色指定: bg="色"
ボタンの文字色指定: fg="色" を各ウィジェットの設定に追加します。
[root.configure(bg="色")]を追記してあげます。
色の部分はredとか、blueとかでもOKですが、より細やかな色を使いたい場合はカラーコードを使えるので、お好みの色を使えます。Pythonで使用できる色見本について、以下のブログで紹介されていました。使用できないカラーコードもあるようで、それについても記載されていますので、ご興味のある方はご確認下さい。
参考:Python:tkinterで指定できる色名について|電脳産物
そして、試してみたのが次の図です。fontの設定と一緒に使うこともできますし、ボタンの場合は文字と背景、両方変更が可能です。
ところで、使えるフォントの名前なんて、正直に言うとすぐに出てきませんし、フォント名を正確に記述する必要があるとなると、すぐに確認できるようになっていないと困っちゃいますし、なんならコピペできるようになってほしい。
というわけで、使えるフォントの一覧を取得する方法がちゃんとあるようです。
左上はテキストが用意してくれたサンプルコードです。右上は参考サイトにあったやり方をやってみました。下段の2点は実行結果の一部分です。
ずらーっとでてきたので、フォントの一覧は一部分だけですが、PCにインストールされているフォントが一覧で出てきたようです。右上の方法の時は「使えるフォントは○個ありますよ」的な文字が表示されていました。
それでは今回はコチラで終了です。お付き合い頂きありがとうございました。
----
参考サイト:
tkinter --- Tcl/Tk の Python インタフェース|Python公式ドキュメント
Tkinter テキストウィジェットのフォントを設定する方法|DelftStack
Tkinterの使い方:フォントの指定方法|だえうホームページ
python tkinter クリックされたウィジェットのテキストや属性を取得する|memopy pythonで作ってみました的なブログ
【Python/Tkinter】Label(ラベル)の使い方:文字フォント・サイズ・色・配置の設定|OFFICE54
【Python】ボタンの作成・文字色・背景色(Tkinter)|鎖プログラム
【Python】ラベルの作成・文字色・背景色(Tkinter)|鎖プログラム
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes