python3 Tips

頑張ってウィンドウ内に文字を表示してみる

Tkinter Label Widgetを利用する

Label()で、文字表示が可能です。

第1引数に親を指定し(この場合、self.root)、text=' 'に文字を入力します。 最後にpack()メソッドで表示可能となります。 pack()をしないと表示されませんので、注意。

#!/usr/bin/env python
# coding=utf-8

from tkinter import *

class MyWindow(object):
    def __init__(self):
        self.root = Tk()
        self.lbl_Text = Label(self.root, text = '表示してみる')
        self.lbl_Text.pack()
        self.root.mainloop()

if __name__ == '__main__':
    app = MyWindow()
			

後ほど解説する予定ですがLabelウィジットは、jpgやgifといったイメージを表示することもできます。

それから、ラベルの表示位置についてですが、パック( pack() )の方法によって変わります。

#!/usr/bin/env python
# coding=utf-8

from tkinter import *

class MyWindow(object):
    def __init__(self):
        self.root = Tk()
        self.lbl_Hello   = Label(self.root, text = 'こんにちは、世界さん')
        self.lbl_GoodBye = Label(self.root, text = 'さようなら、世界クン')
        self.lbl_Hello.pack() # ←ココに注目!
        self.lbl_GoodBye.pack() # ←ココに注目!
        self.root.mainloop()

if __name__ == '__main__':
    app = MyWindow()
			

垂直方向に表示

#!/usr/bin/env python
# coding=utf-8

from tkinter import *

class MyWindow(object):
    def __init__(self):
        self.root = Tk()
        self.lbl_Hello   = Label(self.root, text = 'こんにちは、世界さん')
        self.lbl_GoodBye = Label(self.root, text = 'さようなら、世界クン')
        self.lbl_Hello.pack(side = LEFT) # ←ココに注目!
        self.lbl_GoodBye.pack(side = LEFT) # ←ココに注目!
        self.root.mainloop()

if __name__ == '__main__':
    app = MyWindow()
			

水平方向に表示

pack()だと垂直方向にラベルを配置していき、pack(side = LEFT)の場合は、左から順に配置していく、といった具合です。


Frameを先に組み込む

ここまではrootに直接、ラベルを配置してきましたが、実はこれはあまり良い方法ではなく、 rootの中にフレーム(Frame)を入れてから、その中にラベルを配置していくというのが一般的です。 イメージとしては、こんな感じです→

で、作りなおすと下記のようになります。フレームも設定しただけではダメです。 必ず、pack()してください。

#!/usr/bin/env python
# coding=utf-8

from tkinter import *

class MyWindow(object):
    def __init__(self):
        self.root = Tk()
        self.frm_Main = Frame(self.root)
        self.frm_Main.pack()
        self.lbl_Hello = Label(self.frm_Main, text = 'こんにちは、世界さん')
        self.lbl_GoodBye = Label(self.frm_Main, text = 'さようなら、世界クン')
        self.lbl_Hello.pack(side = LEFT)
        self.lbl_GoodBye.pack(side = LEFT)
        self.root.mainloop()

if __name__ == '__main__':
    app = MyWindow()