python 標準ライブラリのTkinterを使用して、デスクトップアプリを作ってみたいと思います
ファイルを実行すればウインドウが開き、アプリケーションとして様々な機能を持たせることができます
第2回としてボタンに機能を持たせていきます
第1回の記事はこちら
・環境
windows 11
python 3.12.2
・ボタンクリック時のイベント処理
まずボタンクリックしたときに発生するイベントで、簡単なものを書いてみます
import tkinter as tk
root = tk.Tk()
root.title("sample_App")
root.geometry("600x400")
def click(): # クリックされたときの処理
button_1['text'] = "2" # button_1のtextを"2"に変える
button_1 = tk.Button(frame1, text="1", font=("Arial", 20), padx=30, pady=30, command=click)
# クリックされたときのcommandに def clickを呼び出す
button_1.grid(row=0, column=0)
root.mainloop()
ボタンがクリックされたときに関数 def click() が呼び出され、button_1のtextを”2″に変える が実行されます
次に引数を指定してイベントを発生させてみます
メッセージボックスを表示させるために messagebox をimportしておきます
import tkinter as tk
from tkinter import messagebox #メッセージボックスをimport
root = tk.Tk()
root.title("sample_App")
root.geometry("600x400")
def btn_click(msg): #ボタンが押されたときの処理
messagebox.showinfo('メッセージ', msg + "がクリックされました" )
#メッセージボックスをタイトル'メッセージ' 内容 msg で表示
button_1 = tk.Button(root, text="1", font=("Arial", 20), padx=30, pady=30, command=lambda:btn_click('1'))
# クリックされたときのcommandに lambda関数でbtn_clickを引数 1 を呼び出す
button_1.grid(row=0, column=0)
root.mainloop()
クリックされたときにlambda関数で、btn_click関数を引数 “1” で呼び出します
btn_click関数ではメッセージボックスを表示させます
次にラベルを表示してみます
import tkinter as tk
root = tk.Tk()
root.title("sample_App")
root.geometry("600x400")
button_1 = tk.Button(root, text="1", font=("Arial", 20), padx=30, pady=30)
button_1.grid(row=0, column=0)
# ラベル設置
label_1 = tk.Label(root, text='ラベル', font=("Arial", 20), padx=30, pady=30)
label_1.grid(row=1, column=0)
root.mainloop()
とりあえず、”ラベル”という表示のラベルが追加されました
これをボタンをクリックすることで変化させていきます
import tkinter as tk
root = tk.Tk()
root.title("sample_App")
root.geometry("600x400")
def btn_click(num): #ボタンがクリックされたとき
label_1['text'] = num + "ボタンをクリックしました"
# ラベルの表示を変える
button_1 = tk.Button(root, text="1", font=("Arial", 20), padx=30, pady=30, command=lambda:btn_click('1'))
# クリックされたときのcommandに lambda関数でbtn_clickを引数 1 を呼び出す
button_1.grid(row=0, column=0)
label_1 = tk.Label(root, text="ラベル", font=("Arial", 20), padx=30, pady=30)
label_1.grid(row=1, column=0)
root.mainloop()
ボタンをクリックすることでラベルの内容を変化させることができました
次回はさらに複雑な処理を書いていこうと思います
コメント