上節實現了目錄樹的基本呈現,不過,這讓我很不滿意。
第一、我只實現了一層目錄的顯示。但目錄樹都是多層的。
第二、我沒有對目錄樹的事件進行處理。比如單出、展開目錄樹的事件處理。
所以,這一節準備實現目錄樹的事件處理。
每個控件都有類似的虛擬事件,除了能用的比如<Enter>等事件外,還有控件特有的事件。比如,TreeView控件的事件就有三個,可參考如下鏈接:
https://docs.python.org/3/library/tkinter.ttk.html#treeview
于是,我在初始化函數中用bind函數來綁定事件的回調函數onSelectDir(), onOpenDir(),onCloDir()。并且我規劃一個專門用于展開目錄的函數displayDirs(),專門來處理如何展開目錄。
一般的事件函數形如:def onSelectDir(lf, event),其中event事件包含如下信息:
比如event.widget表示是哪個控件發送的事件,你還可以利用x,y跟蹤鼠標的位置,
以及char、keysym等來用跟蹤哪鍵盤上的鍵被按下了。
詳細可參考:https://docs.python.org/3/library/tkinter.html#bindings-and-events
也可參考:http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm
如下選擇事件onSelectDir(),我暫時實現輸出選中項的節點功能:
在展開節點事件中,我計劃:當展開該節點時,就把其下一級子目錄展開:
所以,我暫定義了一個函數displayDirs(),如下:
該函數實現,將指定目錄節點下的子目錄添加到節點下一級,并且將對于目錄的絕對路徑保存在節點的tags變量中。
注意:我已經在初始化函數中先插入了根節點,并且調用了此函數(參考第一張圖的最后一段代碼)。顯示的結果如下:
不過,不太漂亮,先把功能實現,美觀后續再優化了。
本文發布于:2023-02-28 20:13:00,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167766381682039.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:treeview控件(treeview控件怎么用).doc
本文 PDF 下載地址:treeview控件(treeview控件怎么用).pdf
| 留言與評論(共有 0 條評論) |