• 締切済み

Tcl/Tkを使ったメニュー表示について

現在Tcl/Tkを勉強しているのですが、 例えば、最初にこのようなメニュー(マイドキュメントのボタン)が表示され、 ┌────────────┐ │ ┌──────―─┐ │ │ │マイドキュメント│ │ │ └────────┘ │ └────────────┘ この領域内でマウスをクリックしたまま(押したまま?)領域の外(下方向)に出ると、 ┌────────────┐ │ ┌──────―─┐ │ │ │マイドキュメント│ │ │ └────────┘ │ │ ┌────────┐ │ │ │マイピクチャ  │ │ │ └────────┘ │ └────────────┘ このように新しいメニューが増えるように表示されるようにしたいのですが可能でしょうか? できればどんどん増えていくようにしたいです。 ┌────────────┐ │ ┌──────―─┐ │ │ │マイドキュメント│ │ │ └────────┘ │ │ ┌────────┐ │ │ │マイピクチャ  │ │ │ └────────┘ │ │ ┌────────┐ │ │ │マイミュージック│ │ │ └────────┘ │ └────────────┘       :       :       : あまり知識がないのでわかりにくかったらすいませんが、 困っているので是非力を貸してください。 よろしくお願いします。

みんなの回答

  • putra0
  • ベストアンサー率50% (4/8)
回答No.1

こういうことでしょうか? (↓) 上へ抜けたときにボタンが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

tnuak
質問者

補足

回答ありがとうございます!! 実際に動かしてみました。 下への動きがスムーズにできるようになっていました。 勉強になります! 現在自分でも試行錯誤して勉強中ですが、 自分の考えているメニューは、 ・まず、マウスのジェスチャでメニューを起動。(nrlaunchというランチャの起動の仕方をしたいです。参考URL:http://danna.biz/blog/2006/06/nrlaunch.html) ・最初に現れるのは1つの四角いアイコン。 ┌-┐ └-┘ ・ここをクリックしながら(押しながら)上下左右に動かすと、 マイドキュメントやマイピクチャのようなフォルダが1つずつ表示される。 ┌-┐ ┌――┐ ┌―――┐ └-┘→└――┘→└―――┘  ↓         ↓ ┌-┐      ┌―――┐ │-│      └――││ └-┘         └┘  ↓ ┌-┐ │-│ │-│ └-┘ というようなものを考えています。 このようなものも実現することは可能でしょうか? よろしくお願いします。

関連するQ&A

専門家に質問してみよう