close
近來使用 TK 設計程式 GUI 時,使用 listbox widget 時發生了一些問題。透過 google 上的論壇,總算解決了。
問題描述:
將滑鼠的 Single Click Even bind 於 listbox widget 後,curselection 指令回傳的是上一次滑鼠點選的 Item。
解決方式:
TK 4.0 裡,每一個 widget 都有各自所屬的 binding group 或 tag。預設的 tag 就是 widget name, widget class, widget 最上層的 widget name 以及 all. 由於 widget 名稱為第一順位;上述那些 binding ( 用於設定正確的選擇 ) 發生在 class binding 之前。 因此,欲取得一個選擇正確的 binding,你必須確認該 binding 是在 class binding 之後被執行-可透過 bindtags 這個指令。下面是個簡短的範例:
listbox .foo # 定義一個 listbox 的 widget
bind MyTag <1> {puts [%W curselection]} # 當滑鼠左鍵在 MyTage ( binding group ) 上點選時,即列印出正確的選擇。
bindtags .foo "[bindtags .foo] MyTag" # 製作 binding group
全站熱搜
留言列表