【Python】ボタンとイベント(tkinter.button)

Python
Uratake
Uratake

前回作ったウィンドウにボタンを設置して

ボタンアクションができるアプリを作ってみました

本記事のゴール

この記事ではボタンを押すと税込み金額が計算できることをゴールとして設定します。

  • 税抜き金額を入力して計算ボタンを押すと税込み欄に税込み計算が表示される
  • テキストボックスに値を入力する/取得する
  • ラベルを利用する

ボタンアクションの作り方

ソースコード

コピペしてご自身の環境で利用できるように本記事の最後に
ソースコードを記載しておきます。ご参考にしてください。

実行結果

本記事のゴールに設定した税込み計算ボタンを押すと
税込み金額が計算されるアプリが作成されました。

コードの解説

ウィンドウ作成部分については前回の記事を参照ください。

4~8行目はボタンが押された時のアクション内容を記載しています。
4行目の「def button_click():」はボタンが押された場合に実行される内容を関数として定義しています。
5行目の「txt2.delete(0, tkinter.END)」は税込み計算結果出力欄を空欄にしています。
6行目の「num = int(txt1.get())」はテキストボックスに入力した内容を取得してnum変数に代入しています。
7行目の「num = num * 1.1」は税率計算をして結果をnum変数に代入しています。
8行目の「txt2.insert(0, int(round(num,0)))」は計算した結果をテキストボックスに格納しています。

20~23行目はラベルの設定を行っています。
20行目の「lbl1 = tkinter.Label(text=’金額’)」は金額と記載されたラベルを作成しています。
21行目の「lbl1.place(x=30, y=70)」はラベルの設置場所を定義しています。
22行目の「lbl2 = tkinter.Label(text=”税込み金額”)」は税込み金額とラベルを作成しています。
23行目の「lbl2.place(x=30, y=100)」はラベルの設置場所を定義しています。
    21行目とyの座標だけ変えることで2行になっているように表示できます。

26~29行目はテキストボックスの設定を行っています。
26行目の「txt1 = tkinter.Entry(width = 10)」はテキストボックスを作成しています。
    税抜き金額を入力する欄となる部分です。
27行目の「txt1.place(x=120, y=70)」はテキストボックスの設置場所を定義しています。
28行目の「txt2 = tkinter.Entry(width = 10)」はテキストボックスを作成しています。
    税込み金額が表示される欄となる部分です。
29行目の「txt2.place(x=120, y=100)」はテキストボックスの設置場所を定義しています。

32~37行目はボタンの設置及びアクションの設定を行っています。
32~36行目の「test_button = tkinter.Button(window,text = “税込計算”,command = button_click)」は
ボタンを作成してアクションを実行する関数を呼び出しています。
37行目の「test_button.place(x=100, y=150)」ボタンの設置場所を定義しています。

参考ページ: https://docs.python.org/ja/3/library/tk.html

コピペ用のソースコード

import tkinter

#ボタンクリック時のイベント
def button_click():
    txt2.delete(0, tkinter.END)
    num = int(txt1.get())
    num = num * 1.1
    txt2.insert(0, int(round(num,0)))

#Tkクラスの生成
window = tkinter.Tk()

#画面サイズの設定
window.geometry('400x300')

#画面タイトルの設定
window.title('GUI test')

#ラベルの設定
lbl1 = tkinter.Label(text='金額')
lbl1.place(x=30, y=70)
lbl2 = tkinter.Label(text="税込み金額")
lbl2.place(x=30, y=100)

#テキストボックスの設定
txt1 = tkinter.Entry(width = 10)
txt1.place(x=120, y=70)
txt2 = tkinter.Entry(width = 10)
txt2.place(x=120, y=100)

#ボタンの設定
test_button = tkinter.Button(
    window,
    text = "税込計算",
    command = button_click,
    )
test_button.place(x=100, y=150)

#画面表示
window.mainloop()

コメント