概要
TkinterのダイアログでOKボタンやキャンセルボタンが押された際に、戻り値を取得してその後の処理を変えたい場合があります。
この記事では、SimpleDialogを使って戻り値を取得する方法を解説します。
環境
以下の環境で動作を検証しています。
- Windows10
- Python3.11
SimpleDialogで戻り値を取得する
基本の形
以下のコードはself.var
というインスタンス変数をself.get_var()
というメソッドで呼び出し元に返す処理を表現したものです。
from tkinter import simpledialog
class CustomDialog(simpledialog.Dialog):
def __init__(self, master):
self.var = False
super().__init__(parent=master, title="dialog")
def get_var(self) -> bool:
"""
ダイアログ上の値を返すメソッド
"""
return self.var
print(CustomDialog(None).get_var())
これを実行し、OKボタンまたはCancelボタンを押すと、False
がコンソール上に表示されます。
行っていることは単純でCustomDialog(None)
でCustomDialog
クラスのインスタンスを作成し、get_var()
メソッドを呼び出しています。
OKとCancelで戻す値を変える
次のコードはOKボタンとCancelボタンで戻す値を変える処理を表現したものです。
from tkinter import simpledialog
class CustomDialog(simpledialog.Dialog):
def __init__(self, master):
self.var = False
super().__init__(parent=master, title="dialog")
def apply(self):
"""
OKボタンが押された場合だけに呼び出される
"""
self.var = True
def get_var(self) -> bool:
return self.var
print(CustomDialog(None).get_var())
apply
メソッドはsimpledialog.Dialog
クラスに実装されており、OK
ボタンを押した際に呼ばれる処理です。
それをオーバーライドします。
このコードを実行するとOKボタンを押した場合はTrue
、Cancelボタンを押した場合はFalse
と値がコンソールに表示されます。