見出し画像

Pythonでコマンドプロンプトにサヨナラする(1)

PythonでもExcelVBAのメッセージボックスのような、コマンドプロンプトを開かずにGUI上からプログラムの入出力はできるのでしょうか。
(追記修正2021/01/18)

出力

調べてみると、GUIを簡単に扱えるライブラリの「tkinter」にメッセージボックスがあるようです。
こんな風に簡単にプログラムに組み込めるようです。

from tkinter import messagebox

messagebox.showinfo("Title", "Hello, Python World by tkinter!")

かなり楽に実装できたので理想的ではありますが、

画像2

なんか、背後に小さなウィンドウが一緒に開いてダサいです。
メッセージボックスのダイアログを開くだけですが、tkinterのこれは親ウィンドウを作らないと開けないような仕様のようです。
親ウィンドウを隠すようにもできますが、プログラムが膨らむので少し「らくらく」という理想からは遠ざかります。

import tkinter as tk
from tkinter import messagebox

root= tk.Tk()
root.withdraw()

messagebox.showinfo("Title", "Hello, Python World by tkinter!")

入力

tkinterにはsimpledialogという関数があり、これを使うことでInputBoxと同じように入力をすることができます。

import tkinter as tk
from tkinter import simpledialog

root= tk.Tk()
root.withdraw()

strtmp= simpledialog.askstring("Title","文字列を入力してください")

画像3

キャンセルを押した場合は、戻り値がNoneになります。

これらを使うと、簡単な応答プログラムを作ることができます。たとえば、次のフローチャートのようなものですが、これを実現するプログラムは下記のようになります。

画像1

import tkinter as tk
from tkinter import messagebox, simpledialog

root= tk.Tk()
root.withdraw()

while True:
   strtmp= simpledialog.askstring("Title","文字列を入力してください")
   if strtmp==None:
       break
   #ここに処理を入れる
   messagebox.showinfo("Title", strtmp)

少し手間がありますが、気軽に作るには悪くない程度のプログラム量になったと思います。

いいなと思ったら応援しよう!