Step6:そこそこ入力できるようにしてみる
入力欄をつくる Entry Widget
![]() | → | ![]() |
今回はウィンドウ内にエントリー欄を配置して、入力された値をラベルに表示するというプログラムを作ります。
あ、あと、ウィンドウの上にタイトルも表示してみましょう。
#!/usr/bin/env python
# coding=utf-8
from tkinter import *
class Step6(object):
def __init__(self):
self.root = Tk()
self.root.title('Step6 Entry Test')
self.frm_Main = Frame(self.root)
self.frm_Main.pack()
self.lbl_Entry = Label(self.frm_Main)
self.lbl_Entry.configure(text = '何か入力してください')
self.lbl_Entry.pack()
self.etr_Entry = Entry(self.frm_Main)
self.etr_Entry.pack()
self.btn_Run = Button(self.frm_Main)
self.btn_Run.configure(text = '実行', command = self.getEntry)
self.btn_Run.pack()
self.root.mainloop()
def getEntry(self):
strS = self.etr_Entry.get()
self.lbl_Entry.configure(text = strS)
if __name__ == '__main__':
app = Step6()
何らかの情報の受け取りにはEntry()Widgetを利用します。ここに入力された値を得るには、 Entry widgetのget()メソッドを使用します。上の例ではself.etr_Entry.get()(28行目)という形で受け取って、 それをstrSに代入しています。それから、self.lbl_Entry.configure(text = strS)(29行目)でラベルに表示、といった具合です。
ウィンドウにタイトルを入れる
写真のとり方がまずかったので、分かりにくいですが、root( Tk() に .title でウィンドウにタイトルを表示させることができます。 今までは tk と表示されていましたが、self.root.title('Step6 Entry Test') という行を追加することによって Step6 Entry Test と表示されるようになりました。めでたしめでたし。
実は…。
上記の例ではEntryに入力された値を直接、Labelのconfigureで指定して、表示しました。しかし、実は、あまりこの方法は上品ではなく、
実際はvariable classのStringVarを利用してTkinter変数を操作します。StringVarをつくるには、
var = StringVar()
この値を得るには、
var.get()
varに値を設定するときは、
var.set()
で指定します。
先の例では、ラベルに変化を与えるのに self.lbl_Entry.configure(text = strS) としましたが、StringVarを利用する際は、
textvariable(テキスト変数)を用いて、
configure(textvariable = var)
と設定します。
これらを踏まえて作りなおし、getEntry()メソッドにも少し手を加えたものがコチラ(14,15,17行目に注目)↓
#!/usr/bin/env python
# coding=utf-8
from tkinter import *
class Step6(object):
def __init__(self):
self.root = Tk()
self.root.title('Step6 Entry Test')
self.frm_Main = Frame(self.root)
self.frm_Main.pack()
self.bff_Label = StringVar()
self.bff_Label.set('何か入力してください')
self.lbl_Entry = Label(self.frm_Main)
self.lbl_Entry.configure(textvariable = self.bff_Label)
self.lbl_Entry.pack()
self.etr_Entry = Entry(self.frm_Main)
self.etr_Entry.pack()
self.btn_Run = Button(self.frm_Main)
self.btn_Run.configure(text = '実行', command = self.getEntry)
self.btn_Run.pack()
self.root.mainloop()
def getEntry(self):
if self.etr_Entry.get():
self.bff_Label.set('{yourWord}が入力されました。'.format(
yourWord = self.etr_Entry.get()
))
else:
self.bff_Label.set('何も入力されていません')
if __name__ == '__main__':
app = Step6()
めでたしめでたし。

