【Python】tkinterを使ってみた備忘メモ

テーマはPythonの備忘メモ pythonの話

PythonでGUIアプリを作成できるtkinterを使ってみた備忘のメモ。記載内容は徐々に増やしていく予定。

まずは、ボタンの生成と関数の実行

シンプルにボタンを配置して、ボタンを押したら関数を実行する。

ボタンを生成したときに、commandで関数を指定しておく。

import tkinter
from functools import partial

# 画面作成
root = tkinter.Tk()
root.geometry('700x600')
root.title('ボタンイベントの検証')

# シンプルなボタンの関数
def test_click():
    print("test")

test_button = tkinter.Button(root, text="test", command=test_click)
test_button.grid(row=0, column=0)

# 画面を表示
root.mainloop()

関数に引数を使う場合は、partialを使うことで可能になる。

# 引数を使う場合
def numbtn_click(num):
    print(num)

# partialを使う必要あり
num_btn = tkinter.Button(root, text='num_1', command=partial(numbtn_click, 1))
num_btn.grid(row=1, column=0 )

# これだと、うまく動かない
num2_btn = tkinter.Button(root, text='うまく動かない', command=numbtn_click(5)) 
num2_btn.grid(row=2, column=0 )

bindを使ってクリックイベントを使って関数を実行することもできる。<Button-1>でマウスの左ボタンを押したときにイベントが発生する。

# bind でボタンクリックでイベント発生させる方法
def text_click(event):
    print(event.widget["text"])

text_btn = tkinter.Button(root, text="bindボタン")
text_btn.bind("<Button-1>", text_click)
text_btn.grid(row=3, column=0)

bindでも、引数を使うことはできる。この場合もpartialを使う。

その場合は、event(押されたボタンの情報など)は最後の引数に入ることになる。
下の例では、関数には4つの引数で、bindのなかでは3つの引数を指定することになる。

# bind で引数を使う。eventは最後の引数に入るよう
def bind_args_click(arg1, arg2, arg3, arg4):
    print(arg1)
    print(arg2)
    print(arg3)
    print(arg4)
    print(arg4.widget["text"])

bind_nem_btn = tkinter.Button(root, text="bind_arg")
bind_nem_btn.bind("<ButtonRelease-1>", partial(bind_args_click, 1, 2, 3))
bind_nem_btn.grid(row=4, column=0)

ちなみに、<ButtonRelease-1>を指定することで、クリックのボタンを離した時点で発火させることもできる。

参考にしたリンク

python GUI tcl/tk ウィンドウ全体リサイズ時にフォームサイズも伸縮させる

画面サイズとウィジェットの配置(place,pack,grid)

Widget を配置しよう

Entry(エントリー)の使い方

TkinterのEntryに入力された値を取得しよう(getメソッド)

コメント

タイトルとURLをコピーしました