Pythonでコマンドプロンプトにサヨナラする(1)
PythonでもExcelVBAのメッセージボックスのような、コマンドプロンプトを開かずにGUI上からプログラムの入出力はできるのでしょうか。
(追記修正2021/01/18)
出力
調べてみると、GUIを簡単に扱えるライブラリの「tkinter」にメッセージボックスがあるようです。
こんな風に簡単にプログラムに組み込めるようです。
from tkinter import messagebox
messagebox.showinfo("Title", "Hello, Python World by tkinter!")
かなり楽に実装できたので理想的ではありますが、
なんか、背後に小さなウィンドウが一緒に開いてダサいです。
メッセージボックスのダイアログを開くだけですが、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","文字列を入力してください")
キャンセルを押した場合は、戻り値がNoneになります。
これらを使うと、簡単な応答プログラムを作ることができます。たとえば、次のフローチャートのようなものですが、これを実現するプログラムは下記のようになります。
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)
少し手間がありますが、気軽に作るには悪くない程度のプログラム量になったと思います。