最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

初步

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

其代碼如下

import tkinter as tk
from tkinter import ttk
dct = {
    "中國(guó)" : ["北京", "臺(tái)北", "香港"],
    "美國(guó)" : ["紐約", "華盛頓"],
    "日本" : ["東京", "大阪"]
}
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è)字典,用于構(gòu)成樹(shù)形圖的節(jié)點(diǎn)。

接下來(lái), ttk.Treeview 生成一個(gè)樹(shù)形圖,這個(gè)幾乎沒(méi)什么問(wèn)題,和tkinter其他所有組件完全一致,只是多了個(gè) "show" ,表明這是個(gè)樹(shù)形圖,說(shuō)明Treeview這個(gè)組件或許還有其他形式。

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

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

Treeview有三種基本的回調(diào)函數(shù),分別當(dāng)選擇節(jié)點(diǎn)、打開(kāi)父節(jié)點(diǎn)和關(guān)閉父節(jié)點(diǎn)時(shí)觸發(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)

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

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

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

綁定滾動(dòng)條

這種樹(shù)形圖如果全都展開(kāi),一定會(huì)特別長(zhǎng),為了在有限的區(qū)間展示無(wú)限多的樹(shù)形圖節(jié)點(diǎn),就需要為其綁定滾動(dòng)條,其實(shí)很簡(jiǎn)單,只需在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)樹(shù)形圖繪制的文章就介紹到這了,更多相關(guān)Python tkinter樹(shù)形圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼

    Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼

    這篇文章主要介紹了Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python文件基本操作實(shí)用指南

    Python文件基本操作實(shí)用指南

    這篇文章主要給大家介紹了Python文件基本操作的相關(guān)資料,其中包括打開(kāi)文件的方式、按行讀取文件內(nèi)容、復(fù)制文件、重命名文件等操作需要的朋友可以參考下
    2021-05-05
  • Python列表推導(dǎo)式詳解

    Python列表推導(dǎo)式詳解

    列表推導(dǎo)式是Python構(gòu)建列表(list)的一種快捷方式,可以使用簡(jiǎn)潔的代碼就創(chuàng)建出一個(gè)列表.本文通過(guò)代碼示例詳細(xì)介紹了python列表推導(dǎo)式,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • Python之os操作方法(詳解)

    Python之os操作方法(詳解)

    下面小編就為大家?guī)?lái)一篇Python之os操作方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Python多進(jìn)程使用及進(jìn)程池詳解

    Python多進(jìn)程使用及進(jìn)程池詳解

    這篇文章主要為大家介紹了Python多進(jìn)程使用及進(jìn)程池詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析

    Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析

    這篇文章主要介紹了Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 利用Python的PyPDF2庫(kù)提取pdf中的文字

    利用Python的PyPDF2庫(kù)提取pdf中的文字

    PyPDF2是一個(gè)用于處理PDF文件的Python庫(kù),它提供了許多用于讀取和操作PDF文件的功能,對(duì)于需要處理PDF文件的Python應(yīng)用程序,PyPDF2是一個(gè)非常實(shí)用的工具庫(kù),本文將給大家詳細(xì)介紹一下如何通過(guò)Python的PyPDF2庫(kù)提取pdf中的文字,需要的朋友可以參考下
    2023-05-05
  • 使用python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲

    使用python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • mac下如何將python2.7改為python3

    mac下如何將python2.7改為python3

    這篇文章主要介紹了mac下如何將python2.7改為python3,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • 探索python?dask靈活的并行計(jì)算庫(kù)應(yīng)用場(chǎng)景示例

    探索python?dask靈活的并行計(jì)算庫(kù)應(yīng)用場(chǎng)景示例

    這篇文章主要介紹了探索python?dask靈活的并行計(jì)算庫(kù)應(yīng)用場(chǎng)景示例,Dask?是?Python?中的一個(gè)靈活的并行計(jì)算庫(kù),允許用戶利用?CPU?內(nèi)核的強(qiáng)大功能,對(duì)大于內(nèi)存的數(shù)據(jù)集執(zhí)行分布式計(jì)算
    2024-01-01

最新評(píng)論

安平县| 新龙县| 墨江| 南昌县| 蕉岭县| 卢氏县| 孟连| 百色市| 望江县| 通辽市| 马尔康县| 红河县| 丹阳市| 沙坪坝区| 普兰店市| 绥江县| 泰来县| 菏泽市| 阿荣旗| 无为县| 神农架林区| 科技| 独山县| 盘锦市| 海安县| 福海县| 珠海市| 鹤壁市| 日喀则市| 榆树市| 长汀县| 潜江市| 黑龙江省| 莆田市| 静海县| 青海省| 黔东| 昌平区| 申扎县| 新乡县| 通州区|