incrTclは有名な拡張で、継承や非公開メソッドとか、クラス変数、クラスメソッド、とかも使えるようで、C++的な書きかたでOOできるようになります。

その1(基本)

package require Itcl
namespace import itcl::*

class Man {
	variable _name ""
	constructor {name} {
		set _name $name
	}
	
	method greet {} {
		puts "Hello, My name is $_name"
	}
}

Man he "Joe"
he greet
find objects -class Man

delete object he

その2

package require Tk
package require Itcl
namespace import itcl::*
wm withdraw .

class Win {
   variable name
   
   constructor {args} {
       set name .[string trimleft $this {::}]
       toplevel $name

       button $name.pr -text proc   -command [code procPuts]
       button $name.mt -text method -command [code $this methodPuts]
       pack $name.pr $name.mt -side left
   }
   
   destructor {
       destroy $name
   }
   
   #クラスメソッド
   private proc procPuts {} {
       puts aaa
   }
   #メソッド
   private method methodPuts {} {
       puts bbb
   }
}

tclsh から起動して、sourceして、

Win winA

とかするとwinAのウィンドウがでるので、ボタンを押してみてください。 codeというのは、コマンドの名前空間をキャプチャーするitclのコマンドです。変数の名前空間をキャプチャするときはscopeというコマンドがあります。


CategoryTclTk


|New|Edit|Freeze|Diff|Backup|Attach|Copy|Rename|
Last-modified: 2005-04-29 (Fri) 00:00:00 (4830d)
HTML convert time: 0.017 sec.