Python.use(better,Tkinter); Entry #1

記事一覧

Python.use(better, Tkinter)
Entry #1《Python3.1》

《著》森こねこ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2006/10/28

概要

エントリーに入力した文字列を獲得する方法を紹介します。

Tkinter によるオブジェクト指向プログラミングへの扉を開きます。
※ Tcl/Tk で作成した例題を、Tkinter で再構成しました。

事例1:

次のコードを実行すると、ウィンドウが現われます。

>>> ex2()
NEW
Happy

末尾の文字 "S" を削除してから〔Return〕キーを入力します。
・文字列 "NEW" を出力します。
新たに文字列 "Happy" に続けて〔Return〕キーを入力します。
・文字列 "Happy" を出力します。
def ex2():
    class TIPS(object):
        def __init__(self, master):
            widget = Entry(
                master=master,
                )
            text = "NEWS"
            widget.insert(END, text)
            widget.bind('', self)     #1
            widget.pack()

        def __call__(self, event):     #2
            print(event.widget.get())

    ## ----------------------------------------
    root = Tk()
    root.title("Entry")
    root.config(padx=16, pady=8)
    TIPS(master=root)
    root.mainloop()

コードの解説

■ #1:
            widget.bind('', self)     #1

〔Return〕キーに呼応して、特殊メソッド __call__ を起動します。

  • 第2引数には、関数/メソッドのほかに、任意の呼び出し可能オブジェクト(self)を指定できます。

《Note》

class Misc:        # /Python-3.0/Lib/tkinter/__init__.py
    def bind(self, sequence=None, func=None, add=None):
        """Bind to this widget at event SEQUENCE a call to function FUNC.
  • イベントに呼応して起動されるハンドラーを規定します。
keyword arguments
sequence= イベントを指定します
func= イベントハンドラー(関数/メソッド)を指定します
■ #2: イベント処理
        def __call__(self, event):     #2
            print(event.widget.get())
  • イベント event が発生した部品 widget から、テキストを獲得 get します。

《Note》

class Entry(Widget):        # /Python-3.0/Lib/tkinter/__init__.py
    def get(self):
        """Return the text."""
  • 入力した文字列が得られます。


関連記事

Last updated♪2009/09/24