欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+tkinter實(shí)現(xiàn)樹形圖繪制

 更新時間:2023年09月11日 08:40:25   作者:微小冷  
Treeview是ttk中的樹形表組件,功能十分強(qiáng)大,非常適用于系統(tǒng)路徑的表達(dá),下面我們就來看看如何利用這一組件實(shí)現(xiàn)樹形圖的繪制吧,有需要的可以參考下

初步

Treeview是ttk中的樹形表組件,功能十分強(qiáng)大,非常適用于系統(tǒng)路徑的表達(dá)。為了知道屬性圖到底是什么,下面先做個最簡單的樹形圖

其代碼如下

import tkinter as tk
from tkinter import ttk
dct = {
    "中國" : ["北京", "臺北", "香港"],
    "美國" : ["紐約", "華盛頓"],
    "日本" : ["東京", "大阪"]
}
win = tk.Tk() # 設(shè)置窗口大小
# 此為根節(jié)點(diǎn)
tree = ttk.Treeview(win, show = "tree")
for key in dct:
    father = tree.insert("", 0, key, text=key)
    for v in dct[key]:
        tree.insert(father, 1, v, 
            text=v, values=(f"{key}-{v}"))
tree.pack(side=tk.LEFT, expand = True, fill = tk.BOTH)
win.mainloop()

首先,我們創(chuàng)建了一個字典,用于構(gòu)成樹形圖的節(jié)點(diǎn)。

接下來, ttk.Treeview 生成一個樹形圖,這個幾乎沒什么問題,和tkinter其他所有組件完全一致,只是多了個 "show" ,表明這是個樹形圖,說明Treeview這個組件或許還有其他形式。

然后,就到了唯一關(guān)鍵的函數(shù) insert ,其輸入?yún)?shù)分別為父節(jié)點(diǎn)、所在列、節(jié)點(diǎn)ID,如果不輸入節(jié)點(diǎn)ID,那么將有系統(tǒng)分配,這個參數(shù)并不是必須的。而后 text 為其顯示的名稱,非常直觀。最后values是一個并未體現(xiàn)在界面上的值,但可以調(diào)用。

回調(diào)函數(shù)

Treeview有三種基本的回調(diào)函數(shù),分別當(dāng)選擇節(jié)點(diǎn)、打開父節(jié)點(diǎn)和關(guān)閉父節(jié)點(diǎn)時觸發(fā)。仍以上述Treeview為例,其效果如下

具體修改方案為,在mainloop之前,添加如下代碼

def slct(evt):
    for item in tree.selection():
        print(tree.item(item, "values"))
def open_(evt):
    for item in tree.selection():
        print(f"{item} has opened")
def close(evt):
    for item in tree.selection():
        print(f"{item} has closed")
tree.bind('<<TreeviewSelect>>', slct)
tree.bind('<<TreeviewOpen>>', open_)
tree.bind('<<TreeviewClose>>', close)

其中,綁定的三個函數(shù)slct, open_和close,分別對應(yīng)選中節(jié)點(diǎn)、打開或關(guān)閉節(jié)點(diǎn)時觸發(fā)。其函數(shù)內(nèi)容則基本相同,都是打印當(dāng)前選中節(jié)點(diǎn)的相關(guān)值,其中父節(jié)點(diǎn)直接輸出節(jié)點(diǎn)的名字,子節(jié)點(diǎn)則輸出其內(nèi)部定義的values。

通過tree.selection()可獲取選中內(nèi)容,其返回值是一個元組;如果改用tree.focus(),則可返回焦點(diǎn)所在的節(jié)點(diǎn)。

當(dāng)然,這兩個函數(shù)不僅有讀取的功能,當(dāng)二者有輸入時,例如 focus(item) 可讓 item 獲得焦點(diǎn);而 selection(selop, items) ,若 selop 為None,則以列表形式返回所有items,若 selop 指定了選擇方法,則按照給定的方法選中相應(yīng)的items。

綁定滾動條

這種樹形圖如果全都展開,一定會特別長,為了在有限的區(qū)間展示無限多的樹形圖節(jié)點(diǎn),就需要為其綁定滾動條,其實(shí)很簡單,只需在mainloop前面添加下面幾行代碼即可

scroll = ttk.Scrollbar(win)
scroll.config(command=tree.yview)
scroll.pack(side=tk.RIGHT, fill=tk.Y)
# 給treeview添加配置
tree.configure(yscrollcommand=scroll.set)

效果如下

到此這篇關(guān)于Python+tkinter實(shí)現(xiàn)樹形圖繪制的文章就介紹到這了,更多相關(guān)Python tkinter樹形圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?Behave框架學(xué)習(xí)

    Python?Behave框架學(xué)習(xí)

    behave是python語言的行為驅(qū)動開發(fā),全稱:Behavior-driven?development,簡稱BDD,它是一種敏捷軟件開發(fā)技術(shù),它鼓勵軟件項(xiàng)目中的開發(fā)人員、QA和非技術(shù)或業(yè)務(wù)參與者之間進(jìn)行協(xié)作,本文給大家介紹Python?Behave框架,感興趣的朋友一起看看吧
    2022-07-07
  • 利用Python?Matplotlib繪圖并輸出圖像到文件中的方式

    利用Python?Matplotlib繪圖并輸出圖像到文件中的方式

    這篇文章主要介紹了利用Python?Matplotlib繪圖并輸出圖像到文件中的方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • numpy.reshape(-1,1)的具體使用

    numpy.reshape(-1,1)的具體使用

    本文主要介紹了numpy.reshape(-1,1)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • python __add__()的具體使用

    python __add__()的具體使用

    本文主要介紹了python __add__()的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python3字符串操作總結(jié)

    python3字符串操作總結(jié)

    這篇文章主要介紹了python3字符串操作總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python 多進(jìn)程、多線程效率對比

    Python 多進(jìn)程、多線程效率對比

    這篇文章主要介紹了Python 多進(jìn)程、多線程的效率對比,幫助大家選擇適合的技術(shù),感興趣的朋友可以了解下
    2020-11-11
  • 將python文件打包exe獨(dú)立運(yùn)行程序方法詳解

    將python文件打包exe獨(dú)立運(yùn)行程序方法詳解

    這篇文章主要介紹了將python文件打包exe獨(dú)立運(yùn)行程序方法詳解,需要的朋友可以參考下
    2020-02-02
  • 利用Python裁切tiff圖像且讀取tiff,shp文件的實(shí)例

    利用Python裁切tiff圖像且讀取tiff,shp文件的實(shí)例

    這篇文章主要介紹了利用Python裁切tiff圖像且讀取tiff,shp文件的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 如何打包Python Web項(xiàng)目實(shí)現(xiàn)免安裝一鍵啟動的方法

    如何打包Python Web項(xiàng)目實(shí)現(xiàn)免安裝一鍵啟動的方法

    這篇文章主要介紹了如何打包Python Web項(xiàng)目,實(shí)現(xiàn)免安裝一鍵啟動,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python函數(shù)的定義與調(diào)用方法實(shí)例

    Python函數(shù)的定義與調(diào)用方法實(shí)例

    Python 中函數(shù)的應(yīng)用非常廣泛,函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段,這篇文章主要給大家介紹了關(guān)于Python函數(shù)的定義與調(diào)用的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評論