simpledialogを使ってみよう
tkinter.simpledialogモジュールを使うと、ユーザーから値を入力するための簡単なダイアログ画面を作成することができます。
今回はsimpledialogを使って、ダイアログ画面から値を入力し、その値を画面に表示してみましょう。
simpledialogのインポート
simpledialogのメソッドを使うには、tkinter.sipledialogをインポートする必要があります。
import tkinter.simpledialog
simpledialogの書式
simpledialogには、以下のように小数用、整数用、文字列用の3つのメソッドがあります。
書式 | 入力値の型 |
tkinter.simpledialog.askfloat("タイトル", "プロンプト" [, キーワード]) | 小数 |
tkinter.simpledialog.askinteger("タイトル", "プロンプト" [, キーワード]) | 整数 |
tkinter.simpledialog.askstring("タイトル", "プロンプト" [, キーワード]) | 文字列 |
引数のタイトルはメニューバーのタイトル、プロンプトは入力フィールドの上に表示される文字列です。
キーワードを使うと、初期値を設定したり、入力する値を制限することができます。
キーワード | 内容 |
initialvalue | 初期値 |
minvalue | 最小値(askinteger、askfloatで使用可能) |
maxvalue | 最大値(askinteger、askfloatで使用可能) |
1 2 |
tkinter.simpledialog.askstring("文字", "文字を入力してください", initialvalue="サンプル") tkinter.simpledialog.askinteger("整数", "整数を入力してください", minvalue=0, maxvalue=100) |
simpledialogを使ったプログラム
simpledialogを使ったプログラムは、以下のようになります。
文字用、整数用、小数用のボタンを画面に配置して、ダイアログから入力した値を元画面のラベルに表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
### インポート import tkinter import tkinter.simpledialog ### 関数 def func1(): value1.set(tkinter.simpledialog.askstring("文字", "文字を入力してください")) def func2(): value2.set(tkinter.simpledialog.askinteger("整数", "整数を入力してください")) def func3(): value3.set(tkinter.simpledialog.askfloat("小数", "小数を入力してください")) ### メイン画面作成 main = tkinter.Tk() ### 画面サイズ設定 main.geometry("320x400") ### フレーム設定 frame1 = tkinter.Frame(master=main) frame2 = tkinter.Frame(master=main) ### フレーム表示 frame1.pack(pady=20) frame2.pack(pady=20) ### ラベル表示変数 value1 = tkinter.StringVar() value2 = tkinter.IntVar() value3 = tkinter.DoubleVar() ### ボタン作成 button1 = tkinter.Button(master=frame1, text="文字入力", font=(None,12), command=func1) button2 = tkinter.Button(master=frame1, text="整数入力", font=(None,12), command=func2) button3 = tkinter.Button(master=frame1, text="小数入力", font=(None,12), command=func3) ### ラベル作成 label1 = tkinter.Label(master=frame2, textvariable=value1, font=("HG丸ゴシックM-PRO",24), fg="red") label2 = tkinter.Label(master=frame2, textvariable=value2, font=("HG丸ゴシックM-PRO",24), fg="blue") label3 = tkinter.Label(master=frame2, textvariable=value3, font=("HG丸ゴシックM-PRO",24), fg="lime") ### ボタン配置 button1.pack(expand="true", fill="x", side="left") button2.pack(expand="true", fill="x", side="left") button3.pack(expand="true", fill="x", side="left") ### ラベル配置 label1.pack(pady=20) label2.pack(pady=20) label3.pack(pady=20) ### イベントループ main.mainloop() |
プログラムを実行すると、以下のような画面が表示されます。
文字入力ボタンを押下すると、文字入力をするための子画面がポップアップするので、そこに値を入力します。
OKボタンを押下すると、以下のように入力した値が元の画面に表示されます。
同様に整数入力ボタン、小数入力ボタンを押下して表示された子画面に、それぞれ整数、小数を入力すると、以下のように元の画面に入力した値が表示されます。
⇒
⇒