Python 弾丸ツアー #DP: ツリー ... step 1: アプリケーションを起動する
Python.use(better); Python 弾丸ツアー #DP: Tkinter/Python 編
>>> ツリー(階層構造)
step 1: アプリケーションを起動する
《Python3.1|Jython2.5|IronPython2.6》
step 1: Composite を導入する
■ アプリケーションを起動する
from tkinter import * ## ---------------------------------------- def tips(): root = Tk() root.title("Step1: Composite") root.config(padx=12, pady=4) path = "Python-3.0/Mac/Tools" tips = TIPS(root, path) tips.createNodes() print(tips.tree) root.mainloop()
 ̄アプリケーションを起動すると、フォルダー path を頂点とするツリー(フォルダー/ファイルの階層構造)を表示します。
■ ウィンドウを生成する
from tkinter import *
 ̄まず、モジュール Tkinter を取り込む必要があります。
root = Tk() # # ここに必要な処理を記述する # root.mainloop()
 ̄クラス呼び出し Tk() によって、ウィンドウ root が生成されます。メソッド mainloop によって、イベント処理が可能になります。そこで、この間に必要な処理を記述します。
■ ツリーを生成する
tips = TIPS(root, path)
 ̄クラス呼び出し TIPS() によって生成したツリー tips は、親ウィンドウ root に配置されます。ツリー tips は、フォルダー path を頂点とするフォルダー/ファイルの階層構造を表現します。
tips.createNodes()
 ̄メソッド createNodes によって、path を頂点とするツリーを構築します。□
■ Composite::Component
from os import listdir from os.path import join, isdir ## ---------------------------------------- Composite::Component class Component(object): def __init__(self, item): self.item = item def add_(self, component): pass def remove_(self, component): pass
 ̄抽象クラス Component では、共通するプロトコルを規定します。
def __init__(self, item): self.item = item
 ̄メソッド __init__ では、ツリーを構成する各ノードが保持する項目 self.item を初期設定します。ここでは、項目として、任意のファイルやフォルダーが含まれます。
def add_(self, component): pass def remove_(self, component): pass
 ̄これらの抽象メソッドは、共通するプロトコルを規定するもので、子孫クラスで具体的な処理を記述します。そのため、メソッド本体は空 pass になっています。
《補足》Python では、抽象メソッドを規定する冗長な構文(Java における abstract など)は不要です。また、例外 NotImplementedError を導入すると、プログラマーの喚起を促せます。□<<
↑TOP
》作業中です《