0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TkinterのSimpleDialogで戻り値を取得する方法

Posted at

概要

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と値がコンソールに表示されます。

参考

How do I return a result from a dialog?

Tkinter - simpledialogのソースコード

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?