PythonのGUIライブラリTkinterでウィンドウを作る方法
目次
- PythonのGUIライブラリTkinterでウィンドウを作る方法
- Tkinterのインポート方法
- UbuntuでTkinterがない場合
- Tkinterでウィンドウを作る
- ウィンドウにタイトルを付ける
- ウィンドウのサイズを変える
- ウィンドウにラベルを配置する
- おわりに
PythonのGUIライブラリTkinterでウィンドウを作る方法
Pythonの標準GUIライブラリには「Tkinter(ティーキンター)」があります。
このTkinterを使うとPythonで簡単にGUIアプリを作ることができます。
この記事ではTkinterを使ってウィンドウとラベルを表示するところまで解説します。
おまちください! この記事を読めばTkinterの基礎がわかりますよ?
ぜひ読んでいってください。損はさせません。
では解説していきます。
(^ _ ^) | Tkinterの世界へヨーソロ |
関連記事
Tkinterのインポート方法
Tkinterは標準ライブラリなので、インポートするだけで使うことができます。
↓のようにインポートします。
import tkinter
または↓のように「tk」という別名を付けておく方法もよく使われます。
import tkinter as tk
「as」はインポートしたオブジェクトの別名を指定するキーワードです。
↑の場合は「tkinter」というモジュールに「tk」という別名をつけています。
あくまで別名なので「tkinter」と「tk」の中身は同じになります。
UbuntuでTkinterがない場合
UbuntuなどのLinuxを使っているとTkinterがインストールされていないときがあります。
Ubuntu20.04では↓のコマンドでTkinterをインストールできます。
$ sudo apt install python3-tk
Tkinterでウィンドウを作る
Tkinterでウィンドウを作る方法はいろいろあります。
これは方法が1つではないということです。
プログラマーによって書かれるコードが異なることがあります。
しかし、大本のところはみんな共通です。
それは「Tk」クラスを使うということです。
この「Tk」クラスを継承したクラスを作ると、ウィンドウを表すクラスを作ることができます。
たとえば↓のようにです。
import tkinter as tk class MyWindow(tk.Tk): pass my_window = MyWindow() my_window.mainloop()
Windowsで上記のコードを実行すると↓のようなウィンドウが表示されます。
具体的にコードを見ていきますと、まず↓の部分です。
class MyWindow(tk.Tk): pass
ここではtk.Tk
クラスを継承したMyWindow
クラスを作っています。
これがウィンドウを表示するクラスになります。
次に↓の部分ですが、
my_window = MyWindow() # MyWindowをオブジェクトにする my_window.mainloop() # ウィンドウを起動する
まずMyWindow
クラスをmy_window
というオブジェクトにします。
そしてmainloop()
を呼び出してウィンドウを起動します。
「mainloop()はウィンドウを起動するメソッド」と覚えておいてください。
ウィンドウにタイトルを付ける
では次にウィンドウに任意のタイトルを付けてみます。
MyWindow
のイニシャライザを改造します。
↓のようにします。
import tkinter as tk class MyWindow(tk.Tk): def __init__(self): super().__init__() self.title('私のウィンドウです') my_window = MyWindow() my_window.mainloop()
まずこのイニシャライザ(__init__()
)ですが、これはTk
クラスのイニシャライザを改造することになります。
最初にsuper().__init__()
とやってます。
これは親クラスのイニシャライザを呼び出しています。
MyWindow
の親クラスはTk
になるわけです。
この親のイニシャライザを呼び出す処理を書いておかないと、ウィンドウがちゃんと構築されません。
この辺は注意してください。
それからself.title('私のウィンドウです')
でウィンドウにタイトルを設定しています。
title()
メソッドはTk
のメソッドです。
これはウィンドウのタイトルを設定します。
ここまでのコードを実行すると↓のようなウィンドウが表示されます。
ウィンドウのサイズを変える
ウィンドウのサイズを変えたい場合はTkのgeometry()
メソッドを使います。
↓のようにイニシャライザを書きます。
import tkinter as tk class MyWindow(tk.Tk): def __init__(self): super().__init__() self.title('私のウィンドウです') self.geometry('400x300') my_window = MyWindow() my_window.mainloop()
↑のself.geometry('400x300')
という部分がウィンドウのサイズを変えてる部分です。
これは横幅が400px, 高さが300pxになります。
Tkinterのウィンドウのサイズの指定はちょっと変わってますね。
(^ _ ^) | 他のライブラリではあまり見ない。特徴的だ |
上記のコードを実行すると、ウィンドウサイズが調整されたウィンドウが表示されます。
ウィンドウにラベルを配置する
この作成したウィンドウにメッセージを表示させたいとします。
そのような場合、TkinterではウィンドウにGUIのパーツを配置して表示させます。
このGUIのパーツの1つがLabelというクラスです。
↓のようにLabelにメッセージを設定して、ウィンドウに配置します。
import tkinter as tk class MyWindow(tk.Tk): def __init__(self): super().__init__() self.title('私のウィンドウです') self.geometry('400x300') self.label = tk.Label(self, text='こんにちは、世界!') self.label.pack() my_window = MyWindow() my_window.mainloop()
上記のコードを実行すると↓のようなウィンドウが表示されます。
ラベルがウィンドウ内の↑のほうに配置され、ラベルに設定されたテキストが表示されています。
コードを解説します。
まず↓の部分ですが、
self.label = tk.Label(self, text='こんにちは、世界!')
ここではLabelをオブジェクトにしています。
Labelの第1引数にはラベルの親ウィジェット、text
には表示させたい文字列を指定します。
親ウィジェットはここあではMyWindow
になります。
そのためself
を指定します。
次に↓の部分です。
self.label.pack()
↑のpack()
はウィンドウ内にラベルを配置するメソッドです。
こうするとラベルを配置できます。
このpack()
には「どのようにラベルを配置するか?」という情報を与えることができます。
たとえば↓のようにpack()
を書きます。
self.label.pack(expand=True, fill=tk.BOTH)
expand
は親ウィジェットの伸縮にラベルを合わせるかどうかのフラグです。
fill
は配置領域をラベルで埋めるかどうかのフラグです。
tk.BOTH
を指定すると上下左右を埋めます。
この指定を行いコードを実行すると↓のようなウィンドウが表示されます。
↑のようにメッセージが中央に表示されるようになります。
おわりに
今回はPythonのGUIライブラリであるTkinterの使い方を紹介しました。
Tkinterは標準ライブラリのGUIなので使えるようになっておくと非常に捗ると思います。
(^ _ ^) | GUIアプリを作ろう |
(・ v ・) | リッチな表示で付加価値を高める |