【python】TkinterとFrameを活用したButtonの書き方・使い方編
Tkinterでボタンを生成するためにButton(ボタン)ウィジェットを使います。GUIアプリケーションを作成する上で、ボタンを使いこなすことは非常に重要です。それは、ボタンクリック時の動作の指定や、ボタンの装飾など様々なことをオプション引数で指定することができ、私達身の回りにそういったGUIは数多くあるからです。
過去のpythonのプログラムはこちら ーーー> ラベルの書き方・使い方はここをクリック
にほんブログ村
Buttonとは
Button()とはtkinterをインポート後、ボタンを配置することができるメソッドになります。前のLabel記事のボタンバージョンですね
Labelの記事はこちら--->ここをクリック
Buttonのプログラムの記載方法
下記に最小のサンプルプログラムと実行された画面を掲載します。Windo画面に「サンプル」と記載されたボタンを作成するシンプルなものです。
サンプルプログラムに記載しているここからボタン処理の2行がラベルからの変更点です。
設定⇒表示
というフローチャートになります。
サンプルプログラム
#ボタンの使い方
import tkinter as tk
main_Window = tk.Tk()
main_Window.title("tm-kit タイトル")
main_Window.geometry("500x100")
f = tk.Frame(main_Window)
f.pack(fill=tk.BOTH, padx=10,pady=10)
#ここからボタン表示
button = tk.Button(f,text='サンプル')
button.pack()
main_Window.mainloop()
ボタンに処理を加えてみよう
Windowの中に「start」というボタンを作成し、そのボタンをクリックすると「Finish」という名称へ変更するというプログラムを作成していきます。このプログラムでは、イベント処理の方法を学習してきます。
ボタンを押す ⇒ イベント処理
のような流れです
サンプルプログラムの解説
関数について
pythonで関数を宣言するためには、def関数を利用します。記載方法は、下記のとおりです。
「def 関数名():」
今回は、finishという名称としています
つまり関数は、text.set("Finish")を実行するための処理を作成しています。
ボタン処理について
button = tk.Button(f,textvariable=text,command=finish)
button.pack()
についての説明です。
ここでは、さきのFrameで作成したところへボタンを配置するための処理となります。
ここがイベント処理部分となります。ボタンをクリックすると先に作成した関数「finish」が立ち上がります。
command=finish
一度クリックすると
text.set("Finish")が立ち上がり、先ほど記載されていた「text.set("start")」からFinishへ書き換わります。
注意点としては、そこで設定されたステータスが「button.pack()」で配置されるため、下記のような記載方法をするとボタンをクリックしても見かけ上、切り替わりません。Commandで切り替えてもStartへ書き換えるためです。一度、ソースコードを修正し実験してみると面白いです。
button = tk.Button(f,textvariable=text,command=finish)
text.set("start")
button.pack()
サンプルプログラム
#ボタンの使い方
import tkinter as tk
import tkinter.ttk as ttk
def finish():
text.set("Finish")
main_Window = tk.Tk()
main_Window.title("tm-kit タイトル")
main_Window.geometry("500x100")
#ここは、ttkでも同じプログラムが動作するか実験するためのコードです。
#下記の2行のコメントを外す場合は、さらに下にある2行をコメントアウトしてください
#f = ttk.Frame(main_Window)
#f.pack(fill=tk.BOTH, padx=10,pady=10)
f = tk.Frame(main_Window)
f.pack(fill=tk.BOTH, padx=10,pady=10)
text = tk.StringVar(f)
text.set("start")
button = tk.Button(f,textvariable=text,command=finish)
button.pack()
main_Window.mainloop()
動画
まとめ
いかがだったでしょうか。プログラムの処理の方法について学習できたかと思います。次回は、10進数から2進数へ変換するアプリを作成していきたいと思います。
Thanks!
Thank you! Stay tuned for more Python tips in my upcoming posts.