Python.use(better) #Tutor: step04 -- def create_Frame(self, master)

記事一覧 Python.use(better)《Python3.1》《復刻版》

def create_Frame(self, master)

《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

基礎編で利用した学習ツールを作成する過程を通して「プログラミング」の理解を深めます。
※ Tcl/Tk で作成した例題を、Python3.1 で再構成しました。

事例:モジュールを起動する

■ 全項目を確認する

全ステップの「項目」を確認するには、関数 do を利用します。

$ python -i tutorTk.py
>>> do()
...
4: step04 -- def create_Frame(self, master):
■ 各項目を実行する

各ステップの「動作」を確認するには、関数 do に実引数を指定します。

>>> do(4)
>>> # -------------------------------------------------- step04

  • リスト領域(下部)では、任意の項目を選択できます。

任意の項目を選択(ダブルクリック)すると、

  • テキスト領域(上部)には、選択した項目が表示されます。

事例:コードの解説

def step04():
    """def create_Frame(self, master):"""

    class Tutor(object):
        def __init__(self, master, target):
            self.help = self.create_help(master)
            frame = self.create_Frame(master)       #@:
            self.create_controller(frame, target)

        ## ----------------------------------------
        def create_Frame(self, master):
            widget = Frame(master)
            widget.pack(fill=BOTH, expand=True)
            return widget

        def create_controller(self, master, target):
            self.items = s = dir(target)

            widget = Listbox(master, font="courier 12")
            widget.pack(fill=BOTH, expand=True)
            widget.bind(
                "",
                lambda *args: self(widget),
                )

            for e in s:
                widget.insert(END, e)            
■ #1: リファクタリング
    ## ---------------------------------------- before
        def __init__(self, master, target):
            ...
            self.create_controller(master, target)
    ## ---------------------------------------- after
        def __init__(self, master, target):
            ...
            frame = self.create_Frame(master)
            self.create_controller(frame, target)

frame の傘下に、他の部品 widget を配置します。

■ #2: リファクタリング
    ## ---------------------------------------- before
        def create_controller(self, master, target):
            self.items = s = dir(target)

            frame = Frame(master)
            frame.pack(fill=BOTH, expand=True)

            widget = Listbox(frame, font="courier 12")
            ...
    ## ---------------------------------------- after
        def create_Frame(self, master):
            widget = Frame(master)
            widget.pack(fill=BOTH, expand=True)
            return widget

        def create_controller(self, master, target):
            self.items = s = dir(target)

            widget = Listbox(master, font="courier 12")
            ...

Frame を生成するコードの断片を、独立したメソッド create_Frame として抽出します。

》こちらに移動中です《
TOP


関連記事

Last updated♪2009/12/06