- 締切済み
Tcl/Tkを使ったメニュー表示について
現在Tcl/Tkを勉強しているのですが、 例えば、最初にこのようなメニュー(マイドキュメントのボタン)が表示され、 ┌────────────┐ │ ┌──────―─┐ │ │ │マイドキュメント│ │ │ └────────┘ │ └────────────┘ この領域内でマウスをクリックしたまま(押したまま?)領域の外(下方向)に出ると、 ┌────────────┐ │ ┌──────―─┐ │ │ │マイドキュメント│ │ │ └────────┘ │ │ ┌────────┐ │ │ │マイピクチャ │ │ │ └────────┘ │ └────────────┘ このように新しいメニューが増えるように表示されるようにしたいのですが可能でしょうか? できればどんどん増えていくようにしたいです。 ┌────────────┐ │ ┌──────―─┐ │ │ │マイドキュメント│ │ │ └────────┘ │ │ ┌────────┐ │ │ │マイピクチャ │ │ │ └────────┘ │ │ ┌────────┐ │ │ │マイミュージック│ │ │ └────────┘ │ └────────────┘ : : : あまり知識がないのでわかりにくかったらすいませんが、 困っているので是非力を貸してください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- putra0
- ベストアンサー率50% (4/8)
こういうことでしょうか? (↓) 上へ抜けたときにボタンが1つ消えるようにもしてみました。 ※インデントのために全角スペースを使っています。コピペしたらまず、 全角スペース2個をタブ文字1個に置換してくださいね。 ================================== proc main {} { # f はボタンの親フレーム global f createWidgets bind $f <B1-Leave> {onLeave %W %x %y} wm geometry . 300x300 } proc createWidgets {} { global f next buttons set f [frame .buttonframe -relief groove -bd 2] lappend buttons [button $f.b0 -text マイドキュメント] lappend buttons [button $f.b1 -text マイピクチャー] lappend buttons [button $f.b2 -text マイミュージック] pack $f.b0 -fill x -padx 10 -pady 20 -fill x pack $f -padx 20 -pady 20 -side left -anchor nw # next は次に加えるべきボタンのインデックス set next 1 } proc onLeave {w x y} { set frameWidth [winfo width $w] set frameHeight [winfo height $w] # 左右から出ていないかチェック if {$x >= 0 && $x < $frameWidth} { if {$y >= $frameHeight} { # 下から抜けた場合ボタンを増やす showButton } else { # 上から抜けた場合ボタンを減らす hideButton } } } proc showButton {} { global next buttons if {$next < [llength $buttons]} { pack [lindex $buttons $next] -padx 10 -pady 20 -fill x incr next } } proc hideButton {} { global next buttons if {$next > 1} { incr next -1 pack forget [lindex $buttons $next] } } main
補足
回答ありがとうございます!! 実際に動かしてみました。 下への動きがスムーズにできるようになっていました。 勉強になります! 現在自分でも試行錯誤して勉強中ですが、 自分の考えているメニューは、 ・まず、マウスのジェスチャでメニューを起動。(nrlaunchというランチャの起動の仕方をしたいです。参考URL:http://danna.biz/blog/2006/06/nrlaunch.html) ・最初に現れるのは1つの四角いアイコン。 ┌-┐ └-┘ ・ここをクリックしながら(押しながら)上下左右に動かすと、 マイドキュメントやマイピクチャのようなフォルダが1つずつ表示される。 ┌-┐ ┌――┐ ┌―――┐ └-┘→└――┘→└―――┘ ↓ ↓ ┌-┐ ┌―――┐ │-│ └――││ └-┘ └┘ ↓ ┌-┐ │-│ │-│ └-┘ というようなものを考えています。 このようなものも実現することは可能でしょうか? よろしくお願いします。