とある科学の備忘録

とある科学の備忘録

CやPythonのプログラミング、Arduino等を使った電子工作をメインに書いています。また、木製CNCやドローンの自作製作記も更新中です。たまに機械学習とかもやってます。

【Python】Tkinter 第2回 テキストを描画する

前回、PythonのデフォルトGUIアプリのTkinterを使ってウィンドウを作成しました。
shizenkarasuzon.hatenablog.com

今回は、「ラベル」を使って、ウィンドウに文字を書いてみます。

サンプルプログラム

# -*- coding: utf-8 -*-
import tkinter
from tkinter import font

root = tkinter.Tk()
root.title("Label")
root.geometry("300x200")

#デフォルト
label1 = tkinter.Label(root, text="Hello, World!")  #文字ラベル設定
label1.pack(side="top") # 場所を指定 (top, bottom, left, or right)

#文字色、背景色、サイズ、フォントを指定。
font1 = font.Font(family='Helvetica', size=20, weight='bold')
label2 = tkinter.Label(root, text="止まるんじゃねえぞ", fg="white", bg="black", font=font1)
label2.pack(side="top")

#座標入力
font2 = font.Font(family='Times', size=40)
label3 = tkinter.Label(root, text="Text2", font=font2)
label3.place(x=10, y=60)

root.mainloop()

上のプログラムを実行してください。

実行結果

f:id:pythonjacascript:20181231061554j:plain
このように表示されればOKです。


簡単に解説

ラベルの作成は次の3STEPで行います。

STEP1.フォントを作成

font1 = font.Font(family='Helvetica', size=20, weight='bold')

このようにしてフォントを作成します。フォント作成はmustではないですが、作成しないと実行結果の画像の「Hello, World!」のように文字が小さくて見づらくなります。
その為、フォントを作成して文字の大きさ等を調節したほうがいいと思います。

フォント作成方法ですが、font.Font()関数で実行します。引数にフォントの色々な設定をしていく感じです。

引数の例:

説明
family='Helvetica フォント(文字の形)を変える
size=20 文字サイズ(ピクセル)の設定
weight='bold' こう書くと太字になる
slant="italic" 斜体
underline="underline" 下線を付ける
overstrike="overstrike" 取り消し線を付ける

などなど...

利用可能なフォントの一覧は以下のスクリプトの実行で得ることができます。

import tkinter
import tkinter.font as font
root = tkinter .Tk()
print(font.families())

 

STEP2.ラベル(テキストオブジェクト)を作成

Tkinterには、「ラベル」と呼ばれるテキストオブジェクトが存在します。
ウィンドウにテキストを描くには、以下のようなプログラムでラベルを作成します。

label2 = tkinter.Label(root, text="止まるんじゃねえぞ", fg="white", bg="black", font=font1)

これも、roottext引数は必須ですが、そのあとのfgとかbgとかの引数はなくても動作します。
一応、それぞれの引数の説明をすると、このようになります。

説明
root 表示するウィンドウ選択
text 描画する文字(日本語対応)
fg="white" 文字色(デフォルトは黒)
bg="black" 背景色
font=font1 STEP1で作ったフォントを読み込ませる

因みに、fg, bgの色設定は以下のようにHTML等で使われるカラーコードを使って書くことも可能です。

label2 = tkinter.Label(root, text="止まるんじゃねえぞ", fg='#ffffff', bg='#000000')

カラーコードの一覧はこちらを参考にしました。
www.netyasun.com


STEP3.配置を決定

label2.pack(side="top")

の部分で、ウィンドウのどの部分にテキストを置くかを設定します。

side引数には「top, bottom, left, right」の5種類を設定することができ、それぞれ画面の上側、下側、左側、右側に文字を置きます。

また、

label2.place(x=10, y=60)

と書くことで座標で表示位置を指定することもできます。