私は tcl/tk の経験が豊富ですが、大規模なプロジェクトではスクリプト言語を取り除きたいと考えています。しかし、tk キャンバスには非常に大きな機能があり、これを優れた GUI ツールキットに置き換える必要があります。
必要な機能の 1 つは、アクティブなグラフィカル オブジェクトを作成できるキャンバスです。たとえば、tk で次のようにマウスをドラッグして移動できる円があります。
#!/usr/bin/wish8.5
canvas .c
pack .c
set item [.c create oval 10 10 20 20]
.c bind $item <Any-Enter> ".c itemconfig current -fill red"
.c bind $item <Any-Leave> ".c itemconfig current -fill blue"
bind .c <ButtonPress-1> "setlast %x %y"
bind .c <B1-Motion> "moveit %x %y"
set lastx 0
set lasty 0
proc setlast { x y } {
global lastx
global lasty
set lastx $x
set lasty $y
}
proc moveit { x y } {
global lastx
global lasty
.c move current [expr $x-$lastx] [expr $y-$lasty]
set lastx $x
set lasty $y
}
私が見つけた他のどのツールキットも、これには多くの手作り作業が必要です。通常、キャンバス上のどのアイテムがマウスの下にあるかを自分で見つけなければなりません。これは、ポリゴンのような複雑な形状の場合、非常に大量の作業になります。