
パパは会社ではいつも何しているの?
どんな事して、遊んでるの?

研究とソフトウェアを開発しているよ。
なので時たまGUIも作っているよ。

Graphical User interface作ってみたい!
でも難しい?

Pythonならかなり簡単なので今日はそれを紹介するね。
目次
tkinterの導入
pythonでUIを作成したいなら、tkinterというパッケージを利用すると簡単にできます。
普段からpip3を使っているのであれば、下記で簡単にインストールできます。
pip3 install tkinter
windowを出すだけの例
単に窓(window)を1つ出すだけの例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#UI_window.py #tkinterを使えるようにする。 #"tkinter"は長いので、"tk"で指示できるようにする。 import tkinter as tk def main_window(): #main_viewという窓を作成する。 main_view = tk.Tk() main_view.title("Test name") #windowの表示名 main_view.geometry("500x500") #大きさを指定 #main_viewを表示する無限ループ main_view.mainloop() return 0 if __name__ == "__main__": main_window() |
これを
python3 UI_window.py
で実行すると、次のようなwindowが出てきます。

簡単です。
ボタンを配置
次にボタンを配置して、クリックするとポップアップで文字を表示する例を示します。
lambda文を使ってクリック時に起動する関数を呼び出しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#UI_button.py #tkinterを使えるようにする。 #"tkinter"は長いので、"tk"で指示できるようにする。 import tkinter as tk #ポップアップ用メッセージボックスを表示するためのimport import tkinter.messagebox as mb def main_button(): #main_viewという窓を作成する。 main_view = tk.Tk() main_view.title("Test name") main_view.geometry("500x500") #ボタンを配置する。 text_A = "text test" #メッセージボックス(ポップアップ)上に表示する文字 #クリック時に関数を呼び出す。変数"text_A"を入力する。 button_A = tk.Button(master=main_view, text="Button A", command=lambda: button_work(text_A)) button_A.place(x=100, y=200) #ボタンの位置を指定し、配置 #main_viewを表示する無限ループ main_view.mainloop() return 0 #クリックされた時に呼び出される関数 def button_work(text_A): mb.showinfo("show_info_A", text_A) #メッセージボックスで"show_info_A"と表示する。 return 0 if __name__ == "__main__": main_button() |
上記を起動させると次のようになる。

はい、ボタンが出ました。これをクリックすると、次のようにポップアップが出ます。

簡単です。
Yes, Noを聞くポップアップ
ここでさらにポップアップで「Yes」「No」を聞き、ユーザーがクリックする方で処理を変える。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#UI_button_yn.py #tkinterを使えるようにする。 #"tkinter"は長いので、"tk"で指示できるようにする。 import tkinter as tk #ポップアップ用メッセージボックスを表示するためのimport import tkinter.messagebox as mb def main_button_yn(): #main_viewという窓を作成する。 main_view = tk.Tk() main_view.title("Test name") main_view.geometry("500x500") #ボタンを配置する。 text_A = "text test" #メッセージボックス(ポップアップ)上に表示する文字 #クリック時に関数を呼び出す。変数"text_A"を入力する。 button_A = tk.Button(master=main_view, text="Button A", command=lambda: button_work_yn(text_A)) button_A.place(x=100, y=200) #ボタンの位置を指定し、配置 #main_viewを表示する無限ループ main_view.mainloop() return 0 #クリックされた時に呼び出される関数 def button_work_yn(text_A): return_YN = mb.askyesno("Yes or No ?", text_A) #窓のタイトルと、表示文字を指定。クリック結果も"return_YN"で受け取る。 #上記のクリックの結果を元に処理を変化させる。 if return_YN == False: #「No」をクリックされた時の処理 print("No!!!") elif return_YN == True: #「Yes」をクリックされた時の処理 print("Yes!!!") return 0 if __name__ == "__main__": main_button_yn() |
これを実行すると次のようになります。

ここまでは、さっきと同じ。ボタンを押すと、

このように「Yes」「No」を聞かれるwindowが出てきます。
ここで「Yes」をクリックすると、ターミナルに
Yes!!!
が表示され、「No」をクリックすれば、
No!!!
が表示されます。
簡単です。
pythonならこんなに簡単にGUIが作れるんですね!
コメント