KURORO BLOGのロゴ

このエントリーをはてなブックマークに追加
Tkinterで用いるdialogとは?コードを踏まえてわかりやすく解説!?

Tkinterで用いるdialogとは?コードを踏まえてわかりやすく解説!?

今回はTkinterで用いるdialogの使い方を、コードを踏まえてわかりやすく解説いたします。dialogの使い方がわからない、dialogの理解を深めたい方へおすすめです。ぜひ最後までご覧ください。

目次
  1. そもそもTkinterで使われるdialogとは?
    1. dialogを使う目的
  2. 【dialogその1】simpledialog
    1. askstring
    2. askfloat
    3. askinteger
  3. 【dialogその2】filedialog
    1. askopenfilename
    2. askopenfilenames
    3. askopenfile
    4. askopenfiles
    5. asksaveasfile
    6. asksaveasfilename
    7. askdirectory
    8. filedialogに関するoption
  4. 【dialogその3】messagebox
  5. simpledialogをカスタマイズしてみる
    1. どのようにしてdialogをカスタマイズする?
    2. サンプルコード
  6. まとめ
  7. 参考文献
目次を開く⬇︎

そもそもTkinterで使われるdialogとは?

Tkinterで使われるdialogとは、ユーザーへ何らかの入力をお願いしたり、メッセージを確認してもらうために、操作の最中で一時的に開かれる小さい画面をいいます。

具体的なイメージとしては、以下の画像のオレンジ色枠で囲まれる小さい画面を表します。

dialogを使う目的

dialogを使う目的として、

  • 操作不十分な場合に、ユーザーへエラーメッセージを伝えられる
  • 重要な操作を行う前に、確認の意味でユーザーへ質問を投げかけられる
  • 操作した結果を表示して、ユーザーを安心させる

などがあります。

確かに操作した結果をメッセージでいただくと安心しますね。

以降からdialogの種類や使い方を、コードを通じて丁寧に解説いたします。是非最後までご一読ください。

【dialogその1】simpledialog

simpledialogは質問に答えてもらう形式のdialogを作成する際に利用されます。具体的な活用例を3種類ほど、ご紹介いたします。

askstring

文字列を入力して質問に答えてもらう場合に利用します。

1import tkinter.simpledialog as simpledialog
2
3# 第一引数 : タイトル文字列
4# 第二引数 : 値入力を促すメッセージ内容
5# 戻り値 : OKを選択した場合 : 文字列, Cancelを選択した場合 : None
6res = simpledialog.askstring("タイトル文字列", "値入力を促すメッセージ内容")

で定義されます。戻り値としてOKを選択した場合 : 文字列, Cancelを選択した場合 : Noneが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2import tkinter.simpledialog as simpledialog
3
4# simpledialogのaskstringのdialogを表示する。
5def getAskString():
6    # 文字列で答える質問を提供するsimpledialogになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : 値入力を促すメッセージ内容
9    # 戻り値 : OKを選択した場合 : 文字列, Cancelを選択した場合 : None
10    res = simpledialog.askstring("アンパンマンで好きなキャラクターは?", "好きなキャラクターを入力してください。")
11    # レスポンスの内容を表示する。
12    print("askstring", res)
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    # Windowの非表示
20    root.withdraw()
21
22    getAskString()

以下の画像のようにdialogを表示します。

askfloat

浮動小数点数を入力して質問に答えてもらう場合に利用します。

1import tkinter.simpledialog as simpledialog
2
3# 第一引数 : タイトル文字列
4# 第二引数 : 値入力を促すメッセージ内容
5# 戻り値 : OKを選択した場合 : 浮動小数点数, Cancelを選択した場合 : None
6res = simpledialog.askfloat("タイトル文字列", "値入力を促すメッセージ内容")

で定義されます。戻り値としてOKを選択した場合 : 浮動小数点数, Cancelを選択した場合 : Noneが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2import tkinter.simpledialog as simpledialog
3
4# simpledialogのaskfloatのdialogを表示する。
5def getAskFloat():
6    # 浮動小数点数で答える質問を提供するsimpledialogになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : 値入力を促すメッセージ内容
9    # 戻り値 : OKを選択した場合 : 浮動小数点数, Cancelを選択した場合 : None
10    res = simpledialog.askfloat("好きな浮動小数点数はなんですか?", "好きな浮動小数点数を入力してください。")
11    # レスポンスの内容を表示する。
12    print("askfloat", res)
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    # Windowの非表示
20    root.withdraw()
21
22    getAskFloat()

以下の画像のようにdialogを表示します。

askinteger

整数を入力して質問に答えてもらう場合に利用します。

1import tkinter.simpledialog as simpledialog
2
3# 第一引数 : タイトル文字列
4# 第二引数 : 値入力を促すメッセージ内容
5# 戻り値 : OKを選択した場合 : 整数, Cancelを選択した場合 : None
6res = simpledialog.askinteger("タイトル文字列", "値入力を促すメッセージ内容")

で定義されます。戻り値としてOKを選択した場合 : 整数, Cancelを選択した場合 : Noneが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2import tkinter.simpledialog as simpledialog
3
4# simpledialogのaskintegerのdialogを表示する。
5def getAskInteger():
6    # 整数で答える質問を提供するsimpledialogになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : 値入力を促すメッセージ内容
9    # 戻り値 : OKを選択した場合 : 整数, Cancelを選択した場合 : None
10    res = simpledialog.askinteger("好きな整数はなんですか?", "好きな整数を入力してください。")
11    # レスポンスの内容を表示する。
12    print("askinteger", res)
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    # Windowの非表示
20    root.withdraw()
21
22    getAskInteger()

以下の画像のようにdialogを表示します。

【dialogその2】filedialog

filedialogはdialogを通してファイル操作を行うために利用します。具体的な活用例を7種類ほど、ご紹介いたします。

askopenfilename

dialogを通して単数ファイルを選択し、ファイルパスを取得する場合に利用します。

1from tkinter import filedialog
2
3# 第一引数以降(任意) : option
4# 戻り値 : Openを選択してファイルを開いた場合 : ファイルパス, Cancelを選択した場合 : ''
5filename = filedialog.askopenfilename(option1, option2, ...)

で定義されます。戻り値としてOpenを選択してファイルを開いた場合 : ファイルパス, Cancelを選択した場合 : '' が返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import filedialog
3
4# filedialogのaskopenfilenameのdialogを表示する。
5def getAskOpenFileName():
6    # 単数ファイルを選択するためのdialogになります。
7    # 戻り値 : Openを選択してファイルを開いた場合 : ファイルパス, Cancelを選択した場合 : ''
8    filename = filedialog.askopenfilename()
9    # レスポンスの内容を表示する。
10    print("ask open file name", filename)
11
12# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
13if __name__ == "__main__":
14    # Windowを生成する。
15    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
16    root = tk.Tk()
17    # Windowの非表示
18    root.withdraw()
19
20    getAskOpenFileName()

以下の画像のように、dialogを通してファイルパスを取得します。

askopenfilenames

dialogを通して単数 or 複数ファイルを選択し、ファイルパスを取得する場合に利用します。

1from tkinter import filedialog
2
3# 第一引数以降(任意) : option
4# 戻り値 : Openを選択してファイルを開いた場合 : (ファイルパス1, ファイルパス2), Cancelを選択した場合 : ''
5filepaths = filedialog.askopenfilenames(option1, option2, ...)

で定義されます。戻り値としてOpenを選択してファイルを開いた場合 : (ファイルパス1, ファイルパス2), Cancelを選択した場合 : '' が返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import filedialog
3
4# filedialogのaskopenfilenamesのdialogを表示する。
5def getAskOpenFileNames():
6    # 単数もしくは複数ファイルを選択するためのdialogになります。
7    # 戻り値 : Openの場合 : (ファイルパス1, ファイルパス2...), Cancelの場合 : ''
8    filepaths = filedialog.askopenfilenames()
9    # レスポンスの内容を表示する。
10    print("ask open file names", filepaths)
11
12# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
13if __name__ == "__main__":
14    # Windowを生成する。
15    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
16    root = tk.Tk()
17    # Windowの非表示
18    root.withdraw()
19
20    getAskOpenFileNames()

以下の画像のように、dialogを通してファイルパスを取得します。

askopenfile

dialogを通して単数ファイルを選択し、ファイル情報を取得する場合に利用します。

1from tkinter import filedialog
2
3# 第一引数以降(任意) : option
4# 戻り値 : Openを選択してファイルを開いた場合 : ファイル情報, Cancelを選択した場合 : None
5fileData = filedialog.askopenfile(option1, option2, ...)

で定義されます。戻り値としてOpenを選択してファイルを開いた場合 : ファイル情報, Cancelを選択した場合 : Noneが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import filedialog
3
4# filedialogのaskopenfileのdialogを表示する。
5def getAskOpenFile():
6    # 単数ファイル選択するためのdialogになります。
7    # read only
8    # 戻り値 : Openを選択してファイルを開いた場合 : ファイル情報, Cancelを選択した場合 : None
9    fileData = filedialog.askopenfile()
10    # レスポンスの内容を表示する。
11    print("ask open file", fileData)
12
13# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
14if __name__ == "__main__":
15    # Windowを生成する。
16    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
17    root = tk.Tk()
18    # Windowの非表示
19    root.withdraw()
20
21    getAskOpenFile()

以下の画像のように、dialogを通してファイル情報を取得します。

askopenfiles

dialogを通して単数 or 複数ファイルを選択し、ファイル情報を取得する場合に利用します。

1from tkinter import filedialog
2
3# 第一引数以降(任意) : option
4# 戻り値 : Openを選択してファイルを開いた場合 : [ファイル情報1, ファイル情報2, ...], Cancelを選択した場合 : ''
5fileData = filedialog.askopenfiles(option1, option2, ...)

で定義されます。戻り値としてOpenを選択してファイルを開いた場合 : [ファイル情報1, ファイル情報2, ...], Cancelを選択した場合 : '' が返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import filedialog
3
4# filedialogのaskopenfilesのdialogを表示する。
5def getAskOpenFiles():
6    # 複数ファイル選択するためのdialogになります。
7    # read only
8    # 戻り値 : Openを選択してファイルを開いた場合 : [ファイル情報1, ファイル情報2, ...], Cancelを選択した場合 : ''
9    fileData = filedialog.askopenfiles()
10    # レスポンスの内容を表示する。
11    print("ask open files", fileData)
12
13# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
14if __name__ == "__main__":
15    # Windowを生成する。
16    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
17    root = tk.Tk()
18    # Windowの非表示
19    root.withdraw()
20
21    getAskOpenFiles()

以下の画像のように、dialogを通してファイル情報を取得します。

asksaveasfile

dialogを通して単数ファイルを保存する場合に利用します。

1from tkinter import filedialog
2
3# 第一引数以降(任意) : option
4# 戻り値 : Saveを選択してファイルを保存した場合 : ファイル情報, Cancelを選択した場合 : None
5fileData = filedialog.asksaveasfile(option1, option2, ...)

で定義されます。戻り値としてSaveを選択してファイルを保存した場合 : ファイル情報, Cancelを選択した場合 : Noneが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import filedialog
3
4# filedialogのasksaveasfileのdialogを表示する。
5def getAskSaveAsFile():
6    # 単数ファイルを保存するためのdialogになります。
7    # write only
8    # 戻り値 : Saveを選択してファイルを保存した場合 : ファイル情報, Cancelを選択した場合 : None
9    fileData = filedialog.asksaveasfile()
10    # レスポンスの内容を表示する。
11    print("ask save as file", fileData)
12
13# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
14if __name__ == "__main__":
15    # Windowを生成する。
16    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
17    root = tk.Tk()
18    # Windowの非表示
19    root.withdraw()
20    
21    getAskSaveAsFile()

以下の画像のように、ファイルを保存します。

asksaveasfilename

dialogを通して単数ファイルを保存する場合に利用します。

1from tkinter import filedialog
2
3# 第一引数以降(任意) : option
4# 戻り値 : Saveを選択してファイルを保存した場合 : ファイルパス, Cancelを選択した場合 : ''
5filename = filedialog.asksaveasfilename(option1, option2, ...)

で定義されます。戻り値としてSaveを選択してファイルを保存した場合 : ファイルパス, Cancelを選択した場合 : '' が返されます。

※筆者のMac環境ではファイル保存されませんでした。下にコードは貼り付けておきます。

1import tkinter as tk
2from tkinter import filedialog
3
4# filedialogのasksaveasfilenameのdialogを表示する。
5def getAskSaveAsFileName():
6    # 単数ファイルを保存するためのdialogになります。
7    # ※筆者のMac OS環境ではファイル保存されませんでした。
8    # 戻り値 : Saveを選択してファイルを保存した場合 : ファイルパス, Cancelを選択した場合 : ''
9    filename = filedialog.asksaveasfilename()
10    # レスポンスの内容を表示する。
11    print("ask save as file name", filename)
12
13# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
14if __name__ == "__main__":
15    # Windowを生成する。
16    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
17    root = tk.Tk()
18    # Windowの非表示
19    root.withdraw()
20    
21    getAskSaveAsFileName()

askdirectory

dialogを通してディクレトリを選択し、ディレクトリパスを取得する場合に利用します。

1from tkinter import filedialog
2
3# 第一引数以降(任意) : option
4# 戻り値 : Chooseを選択してディレクトリを開いた場合 : ディレクトリパス, Cancelを選択した場合 : ''
5directoryName = filedialog.askdirectory(option1, option2, ...)

で定義されます。戻り値としてChooseを選択してディレクトリを開いた場合 : ディレクトリパス, Cancelを選択した場合 : '' が返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import filedialog
3
4# filedialogのaskdirectoryのdialogを表示する。
5def getAskDirectory():
6    # ディクレトリを選択するためのdialogになります。
7    # 戻り値 : Chooseを選択してディレクトリを開いた場合 : ディレクトリパス, Cancelを選択した場合 : ''
8    directoryName = filedialog.askdirectory()
9    # レスポンスの内容を表示する。
10    print("ask directory", directoryName)
11
12# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
13if __name__ == "__main__":
14    # Windowを生成する。
15    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
16    root = tk.Tk()
17    # Windowの非表示
18    root.withdraw()
19    
20    getAskDirectory()

以下の画像のようにディレクトリパスを取得します。

filedialogに関するoption

filedialogを活用する上で便利なoptionがあります。以下の表に使い方をまとめましたので、ご確認下さい。

option名説明文用例
parent            Windowの上にfiledialogを表示する。filedialog.askdirectory(parent=root)
titlefiledialogのtitleを変更する。filedialog.askopenfile(title='hoghoge')
initialdirfiledialogを初期で開くディレクトリを設定する。filedialog.askopenfile(initialdir='./')
initialfile保存するファイル名を初期化する。filedialog.asksaveasfile(initialfile='hogehoge.txt')
filetypes選択できるファイル形式を限定する。filedialog.askopenfilename(filetypes=[("JPEG", ".jpg")])
defaultextension拡張子をつけないでファイル保存する場合に、指定した拡張子を自動設定します。filedialog.asksaveasfile(defaultextension="jpg")
multipleTrueにすると、ファイルの複数選択が可能になります。どのfiledialogに関しても、対応可能です。filedialog.askopenfilename(multiple=True)

詳細に関してはこちらをご確認ください。

【dialogその3】messagebox

messageboxは、ユーザーへメッセージを表示したり、簡単な質問へ回答してもらう場合に利用します。

messageboxに関しては、別の記事で丁寧にまとめましたので、【サンプルコード付】Tkinterで使われるmessageboxの活用法を解説をご覧ください。

simpledialogをカスタマイズしてみる

先ほどまで様々なdialogを見てきましたが、型通りでカスタマイズされたdialogは作成していませんでした。

そこで「simpledialogをカスタマイズしてみる」では、simpledialogを活用して、dialogをカスタマイズしたいと思います。

どのようにしてdialogをカスタマイズする?

dialogをカスタマイズする前に、まずはsimpledialogがどのように作られているのか、知る必要があります。

以下の画像をご覧ください。

画像の通り、simpledialogは、

  • simpledialog.Dialogクラスで形成される
  • simpledialog.Dialogクラス内に、関数を持たせて部品化している
  • body関数でボタン上の項目を表現している
  • buttonbox関数でボタン項目を表現している
  • OKボタンを実行後に、apply関数が実行される

ように作られています。

よって、

  1. 新しくクラスを作成する
  2. 新しく作成するクラスにsimpledialog.Dialogのクラスを継承する
  3. body関数, buttonbox関数, apply関数をオーバーライドしてカスタマイズする

ことで実現できます。

サンプルコード

試しに以下のようなコードを作成してみました。

1import tkinter as tk
2import tkinter.simpledialog as simpledialog
3
4# simpledialog.Dialogクラスを継承したCustomDialogクラスを作成する。
5# 1. 新しくクラスを作成する
6# 2. 新しく作成するクラスにsimpledialog.Dialogのクラスを継承する
7class CustomDialog(simpledialog.Dialog):
8    # じゃんけんの手の情報を格納する変数
9    handList = [
10        'グー',
11        'チョキ',
12        'パー',
13    ]
14    # 現在選択されているラジオボタンの値を格納する変数
15    variable = None
16    
17    # 3. body関数, buttonbox関数, apply関数をオーバーライドしてカスタマイズする
18    def body(self, master):
19        # bodyを親要素として、label Widgetを作成する。
20        # text : テキスト情報
21        # Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
22        label = tk.Label(master, text='じゃんけんの手を選択してください。')
23        # bodyを親要素として、label Widgetをどのように配置するのか?
24        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
25        label.pack()
26
27        # 現在選択されているラジオボタンの値を文字列変数として扱う。
28        # StringVarについて : https://kuroro.blog/python/K53voPjJuKFfYrjmP8FP/
29        self.variable = tk.StringVar()
30        for hand in self.handList:
31            # bodyを親要素として、radiobutton Widgetを作成する。
32            # value : ラジオボタン自身が持つ値の設定。グー or チョキ or パー
33            # variable : 現在選択中のラジオボタンの値を設定。文字列変数(self.variable)として値を持たせることで、可変として扱い、その他のラジオボタンへ値を共有して選択の状態を管理できる。
34            # command : ラジオボタンを選択した場合に、実行する関数を設定。self.switchButtonStateとする。
35            # text : ラジオボタンを説明するテキスト。
36            # Radiobuttonについて : https://kuroro.blog/python/ztJbt5uabbTBMCGcljHc/
37            radiobutton = tk.Radiobutton(master, value=hand, variable=self.variable, command=self.switchButtonState, text=hand)
38            # bodyを親要素として、radiobutton Widgetをどのように配置するのか?
39            # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
40            radiobutton.pack(side=tk.LEFT, padx=5, pady=5)
41    
42    # 3. body関数, buttonbox関数, apply関数をオーバーライドしてカスタマイズする
43    def buttonbox(self):
44        # buttonboxを親要素として、frame Widget(Frame)を作成する。
45        # Frameについて : https://kuroro.blog/python/P20XOidA5nh583fYRvxf/
46        frame = tk.Frame(self)
47        # buttonboxを親要素として、frame Widget(Frame)をどのように配置するのか?
48        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
49        frame.pack()
50
51        # frame Widget(Frame)を親要素として、button Widgetを作成する。
52        # text : テキスト情報
53        # width : 幅の設定
54        # command : ボタンを選択した場合に、実行する関数を設定する。self.okとする。
55        # state : ボタンの状態を設定する。ラジオボタンが選択されていない初期状態では、tk.DISABLEDにして選択できないようにする。
56        # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
57        self.selectBtn = tk.Button(frame, text="Select", width=10, command=self.ok, state=tk.DISABLED)
58        # frame Widget(Frame)を親要素として、button Widgetをどのように配置するのか?
59        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
60        self.selectBtn.pack(side=tk.LEFT, padx=5, pady=5)
61
62        # frame Widget(Frame)を親要素として、button Widgetを作成する。
63        # text : テキスト情報
64        # width : 幅の設定
65        # command : ボタンを選択した場合に、実行する関数を設定する。self.cancelとする。
66        # Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
67        self.cancelBtn = tk.Button(frame, text="Cancel", width=10, command=self.cancel)
68        # frame Widget(Frame)を親要素として、button Widgetをどのように配置するのか?
69        # packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
70        self.cancelBtn.pack(side=tk.LEFT, padx=5, pady=5)
71
72    def switchButtonState(self):
73        # ラジオボタンが選択された場合に、Selectボタンを有効化する。
74        if self.selectBtn['state'] == tk.DISABLED:
75            self.selectBtn['state'] = tk.NORMAL
76     
77    # 3. body関数, buttonbox関数, apply関数をオーバーライドしてカスタマイズする
78    def apply(self):
79        # dialogを閉じた後に、ラジオボタンの選択結果を出力する。
80        print(self.variable.get())
81
82# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
83if __name__ == "__main__":
84    # Windowを生成する。
85    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
86    root = tk.Tk()
87    # Windowの非表示
88    root.withdraw()
89
90    CustomDialog(root)

上記のコードをPython環境で実行すると、以下の画像のようにsimpledialogのカスタマイズが可能になります。

まとめ

  • Tkinterで使われるdialogとは、ユーザーへ何らかの入力をお願いしたり、メッセージを確認してもらうために、操作の最中で一時的に開かれる小さい画面を表す。
  • dialogを使う目的として、操作した結果を表示して、ユーザーを安心させる用途がある。

参考文献