tkinterを使用してPythonで「はい / いいえ(Yes / No)」メッセージボックスを作成する

スポンサーリンク

tkinterを使用してPythonで「はい / いいえ(Yes / No)」メッセージボックス(ダイアログボックス)を作成してみます。

なお、tkinterは、Pythonをインストールすると、標準ライブラリとして含まれています。

■Python

Pythonバージョン

今回のPythonのバージョンは、「3.8.2」を使用しています。

■コード

それでは実際にtkinterを使用して「はい / いいえ(Yes / No)」メッセージボックス(ダイアログボックス)を表示させるスクリプトを書いてきます。

import tkinter as tk
from tkinter import messagebox

root = tk.Tk() # ウインドウを作る

#キャンバスエリア
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()

#Yes/No質問メッセージボックス

def ExitApplication():
    Messagebox = tk.messagebox.askquestion('アプリケーションの終了','アプリケーションを終了してもよろしいですか', icon='warning')
    if Messagebox == 'yes': #If関数
        root.destroy()
    else:
        tk.messagebox.showinfo('戻る','アプリケーション画面に戻ります')

#'ExitApplication'関数を呼び出すためのボタンを追加する

button = tk.Button(root, text = 'アプリケーションを終了', command=ExitApplication, bg='red', fg='gray1')
canvas.create_window(150, 150, window = button)

root.mainloop()

tkinterモジュールをインポートし、グラフィカルユーザーインターフェイス(GUI)を作成する。

GUIの画面を作成し、Canvas(キャンバス)も作成する。キャンバスの数値を設定する。

設定後、GUIの画面内に「アプリケーションの終了(「はい / いいえ(Yes / No)」)」のメッセージを表示するボタン(button)が必要なので、作成する。「button = tk.Button」でボタンのテキストなどを設定する。create_window()でGUIの画面内でのボタン位置を決める。

ボタンをクリックした時にメッセージボックスが画面に表示され、メッセージボックスの内容を作るのは、’ExitApplication’関数/コマンド内で作成する。「Messagebox = tk.messagebox.askquestion」で「アプリケーションの終了(「はい / いいえ(Yes / No)」)」のメッセージボックスのテキストなど編集する。’ExitApplication’関数/コマンドでは、If関数を使い、メッセージボックスに表示された「はい」を押すとウインドウ(destroy())が閉じ、「いいえ」を押すと、「アプリケーション画面に戻ります」と表示されるウインドウ(tk.messagebox.showinfo())が表示される。

なお、「tk.messagebox.askquestion」で質問メッセージボックスを作成した時の「はい」のボタンを押した時の戻り値は「yes」、「いいえ」のボタンを押した時の戻り値は「no」になるので、If関数を使うところで、「if Messagebox == ‘はい’:」といった記述をしないことに注意する。

■実行

今回の書いたスクリプトを「ExitApplication-test.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、「tk」というウインドウが表示されました。「アプリケーションを終了」というボタンをクリックしてみます。

クリックしてみると、「アプリケーションの終了」というメッセージボックスが表示され、「アプリケーションを終了してもよろしいですか」と質問されているので、「はい」を押すと、メッセージボックスと、「tk」というウインドウの全てが閉じられました。

「いいえ」を押すと、「戻る」というウインドウが表示され、「アプリケーション画面に戻ります」というメッセージが表示され、「OK」ボタンをクリックすると、「tk」というウインドウに戻ることを確認できました。

コメント

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