學習筆記(57):Python實戰編程-Treeview

立即學習:https://edu.csdn.net/course/play/19711/343120?utm_source=blogtoedu

1.樹狀結構Treeview:分為樹狀折疊式列表和列表顯示,是一種很重要數據列表展示的形式

?

2.樹狀列表建立步驟:

1)創建一個樹狀列表:在這里可以設置顯示的窗體和列的名稱

        self.treeview = tkinter.ttk.Treeview(self.root,#樹狀結構需要顯示的窗體columns = ("mid","name"),#設置樹狀列表中列的名稱,將所有列名稱用一個元組表示)

2)設置列表中的列的標題

self.treeview.heading(column = "mid",text = "編號")

3)設置列表中列的布局

self.treeview.column("mid",width = 100,anchor = "w")

4)向列表中插入父級數據

        self.level_a = self.treeview.insert(parent = "",#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第一個父級數據",#設置一條數據的標題,可以理解為是行標題values = ("父級1列1","父級1列2") #為每一條數據中對應的列設置相應的值,用元組表示)

5)在父級數據下插入子級數據

        self.level_a1 = self.treeview.insert(parent = self.level_a,#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第一條子級數據",#設置一條數據的標題,可以理解為是行標題values = ("父1子1列1","父1子1列2") #為每一條數據中對應的列設置相應的值,用元組表示)

6)樹狀結構列表的顯示

self.treeview.pack(anchor = "w",fill = "x")#樹狀列表的顯示,并且使其在x軸方向進行填充

?

3.其他的用法

1)樹狀結構列表事件的綁定

self.treeview.bind("<Double-Button-1>",self.treeview_handle)

2)事件的定義(包含如何獲得列表數據)

    def treeview_handle(self,event):for index in self.treeview.selection():#獲得選中項的索引,返回一個列表或者元組,因此相應for循環取出values= self.treeview.item(index,"values")#根據索引獲得索引項的數據,數據是以一個元組的形式返回,包含一條信息info = "編號:%s、職位:%s"%valuestkinter.messagebox.showinfo(title = "您選中的列表信息",#設置彈出窗口的標題message = info#設置在彈出窗體需要彈出的信息)

?

4.完整代碼

1)樹狀折疊列表

import tkinter#導入創建窗體的相關模塊
import os
import tkinter.ttkimage_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI編程\resources'  + os.sep + 'linlianqin.gif'#因為每個平臺的分隔符不一樣,所以用os.sep可以自動切換到相應平臺的分隔符class Mainwindow():#創建窗口類def __init__(self):self.root = tkinter.Tk()#創建主體窗口self.root.title('linlianqin')#定義窗體的名字self.root.geometry('500x600')#定義窗體的初始大小self.root.maxsize(1200,1200)#設置窗口可以顯示的最大尺寸self.tree()#樹結構顯示self.root.mainloop()#顯示窗口,這個代碼一定要放在所有窗口設置的后面#-----------------創建樹狀列表-----------------------def tree(self):# -----------------創建樹狀列表-----------------------self.treeview = tkinter.ttk.Treeview(self.root,#樹狀結構需要顯示的窗體columns = ("mid","name"),#設置樹狀列表中列的名稱,將所有列名稱用一個元組表示)# ----------------為列表中指定名稱的列設置列的標題----------------self.treeview.heading(column = "mid",text = "編號")self.treeview.heading(column = "name",text = "職位")# ---------------------為列表中指定名稱的列進行布局設置------------------self.treeview.column("mid",width = 100,anchor = "w")self.treeview.column("name",width = 100,anchor = "w")#為列表中指定名稱的列進行布局設置#-----------------------為列表插入數據,.一行表示一條插入的數據---------------------self.level_a = self.treeview.insert(parent = "",#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第一個父級數據",#設置一條數據的標題,可以理解為是行標題values = ("父級1列1","父級1列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_b = self.treeview.insert(parent = "",#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第二個父級數據",#設置一條數據的標題,可以理解為是行標題values = ("父級2列1","父級2列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_c = self.treeview.insert(parent = "",#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第三個父級數據",#設置一條數據的標題,可以理解為是行標題values = ("父級3列1","父級3列2") #為每一條數據中對應的列設置相應的值,用元組表示)#----------------為父級數據添加子類數據----------------------self.level_a1 = self.treeview.insert(parent = self.level_a,#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第一條子級數據",#設置一條數據的標題,可以理解為是行標題values = ("父1子1列1","父1子1列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_a11 = self.treeview.insert(parent = self.level_a1,#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第一條孫級數據",#設置一條數據的標題,可以理解為是行標題values = ("父1子1孫1列1","父1子1孫1列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_a11 = self.treeview.insert(parent = self.level_a1,#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第二條孫級數據",#設置一條數據的標題,可以理解為是行標題values = ("父1子1孫2列1","父1子1孫2列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_a2 = self.treeview.insert(parent = self.level_a,#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第二條子級數據",#設置一條數據的標題,可以理解為是行標題values = ("父1子2列1","父1子2列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_b1 = self.treeview.insert(parent = self.level_b,#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第一條子級數據",#設置一條數據的標題,可以理解為是行標題values = ("父2子1列1","父2子2列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.treeview.pack(anchor = "w",fill = "x")#樹狀列表的顯示,并且使其在x軸方向進行填充if __name__ == '__main__':Mainwindow()#將窗體類實例化

2)樹狀非折疊列表

import tkinter#導入創建窗體的相關模塊
import os
import tkinter.ttk
import tkinter.messageboximage_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI編程\resources'  + os.sep + 'linlianqin.gif'#因為每個平臺的分隔符不一樣,所以用os.sep可以自動切換到相應平臺的分隔符class Mainwindow():#創建窗口類def __init__(self):self.root = tkinter.Tk()#創建主體窗口self.root.title('linlianqin')#定義窗體的名字self.root.geometry('500x600')#定義窗體的初始大小self.root.maxsize(1200,1200)#設置窗口可以顯示的最大尺寸self.tree()#樹結構顯示self.root.mainloop()#顯示窗口,這個代碼一定要放在所有窗口設置的后面#-----------------創建樹狀列表-----------------------def tree(self):# -----------------創建樹狀列表-----------------------self.treeview = tkinter.ttk.Treeview(self.root,#樹狀結構需要顯示的窗體columns = ("mid","name"),#設置樹狀列表中列的名稱,將所有列名稱用一個元組表示show = "headings"#將有標題的列頂格顯示,即不會顯示行標題)# ----------------為列表中指定名稱的列設置列的標題----------------self.treeview.heading(column = "mid",text = "編號")self.treeview.heading(column = "name",text = "職位")# ---------------------為列表中指定名稱的列進行布局設置------------------self.treeview.column("mid",width = 100,anchor = "w")self.treeview.column("name",width = 100,anchor = "w")#為列表中指定名稱的列進行布局設置#-----------------------為列表插入數據,.一行表示一條插入的數據---------------------self.level_a = self.treeview.insert(parent = "",#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加# text = "第一個父級數據",#設置一條數據的標題,可以理解為是行標題values = ("父級1列1","父級1列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_b = self.treeview.insert(parent = "",#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加# text = "第二個父級數據",#設置一條數據的標題,可以理解為是行標題values = ("父級2列1","父級2列2") #為每一條數據中對應的列設置相應的值,用元組表示)self.level_c = self.treeview.insert(parent = "",#指定父級數據index = "end",#設置添加的位置,這里設置的是在當前數據的后面進行添加text = "第三個父級數據",#設置一條數據的標題,可以理解為是行標題values = ("父級3列1","父級3列2") #為每一條數據中對應的列設置相應的值,用元組表示)#---------------------為樹狀列表綁定事件-----------------------------------self.treeview.bind("<Double-Button-1>",self.treeview_handle)self.treeview.pack(anchor = "w",fill = "x")#樹狀列表的顯示,并且使其在x軸方向進行填充#---------------------定義樹狀列表相應處理的事件-------------------------def treeview_handle(self,event):for index in self.treeview.selection():#獲得選中項的索引,返回一個列表或者元組,因此相應for循環取出values= self.treeview.item(index,"values")#根據索引獲得索引項的數據,數據是以一個元組的形式返回,包含一條信息info = "編號:%s、職位:%s"%valuestkinter.messagebox.showinfo(title = "您選中的列表信息",#設置彈出窗口的標題message = info#設置在彈出窗體需要彈出的信息)if __name__ == '__main__':Mainwindow()#將窗體類實例化

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256782.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ios 常用操作-1

項目中可能會用到的一些技巧方法&#xff0c;做個記錄&#xff0c;已被不時之需。 一。程序在運行過程中不鎖屏&#xff1f; [UIApplication sharedApplication].idleTimerDisabledYES; 二。顯示被view 或 control遮蓋的背景內容。比如有時在不同的ios版本上 tableview cell上畫…

(視覺和激光傳感器)SLAM 做室內GPS與室外真實GPS在無人機上的對比

1、室外無人機GPS的作用 1&#xff09;記錄實時無人機起飛點與當前飛行無人機的絕對位置關系&#xff0c;顯示當面無人機離起飛點的真實距離 2&#xff09;做室外無人機懸停的功能&#xff0c;使用GPS當前點與懸停點GPS經緯度做對比 3&#xff09;無人機上層應用&#xff0c…

C# 連接 Oracle 的幾種方式

C# 連接 Oracle 的幾種方式 一&#xff1a;通過System.Data.OracleClient(需要安裝Oracle客戶端并配置tnsnames.ora)1. 添加命名空間System.Data.OracleClient引用2. using System.Data.OracleClient;3. string connString "User IDIFSAPP;PasswordIFSAPP;Data SourceRAC…

驗證VSPHERE5 支持大于2TB磁盤

VSPHERE5 使用GTP格式的分區表&#xff0c;文件系統類型為VMFS5.X&#xff0c;直接支持大于2TB的磁盤分區&#xff0c;相對于VSPHERE4不同 vsphere4使用MSDOS格式的分區表&#xff0c;文件系統類型為VMFS3.X 而vsphere5 block塊大小統一為1MB&#xff0c;而不是vsphere4的多種格…

學習筆記(58):Python實戰編程-Combobox

立即學習:https://edu.csdn.net/course/play/19711/343121?utm_sourceblogtoedu 1.下拉列表Combobox:與Listbox相比&#xff0c;下拉列表是一次只是顯示一項內容&#xff0c;適用于布局緊張的情況下&#xff0c;而Listbox則是將所有的內容鋪開來展示 2.關鍵代碼 1&#xff09…

Java Inner Class 內部類

內部類 Inner Class 一個內部類可以定義在另一個類里&#xff0c;可以定義在函數里&#xff0c;甚至可以作為一個表達式的一部分。 Java中的內部類共分為四種&#xff1a; 靜態內部類static inner class (also called nested class) 成員內部類member inner class 局部內部類l…

SLAM系統工程,常用數據集下載鏈接(TUM KITTI DSO Mono EuRoC)

TUM 鏈接&#xff1a;https://pan.baidu.com/s/1nwXtGqH 密碼&#xff1a;lsgr KITTI 鏈接&#xff1a;https://pan.baidu.com/s/1htFmXDE 密碼&#xff1a;uu20 DSO 鏈接&#xff1a;https://pan.baidu.com/s/1eSRmeZK 密碼&#xff1a;6x5b Mono 鏈接&#xff1a;http…

uva1331三角剖分

題意&#xff1a;輸入一個簡單m&#xff08;2<m<50)邊形&#xff0c;找到一個最大三角形最小的三角剖分&#xff08;用不相交的對角線把一個多邊形分成若干個三角形&#xff09;。輸出最大的三角形面積。 分析&#xff1a;每條對角線都是無序的&#xff0c;因此&#xff…

Halcon算子翻譯——default

名稱 default - switch段中的備用分支。 用法 default( : : : ) 描述 default在switch段中開放備用分支。 如果switch語句的控制表達式的計算結果不匹配前面的case語句的任何整數常量&#xff0c;則訪問該分支。 結果 default&#xff08;作為算子&#xff09;總是返回2&#x…

現代制造工程筆記01:課程安排

電子教材&#xff1a;http://www.bookask.com/read/4588.html

(轉).gitignore詳解

本文轉自http://sentsin.com/web/666.html 今天講講Git中非常重要的一個文件——.gitignore。 首先要強調一點&#xff0c;這個文件的完整文件名就是“.gitignore”&#xff0c;注意最前面有個“.”。這樣沒有擴展名的文件在Windows下不太好創建&#xff0c;這里給出win7的創建…

Effective Java 英文 第二版 讀書筆記 Item 14:In public classes,use accessor methods,not public fields...

本章主要分析 公開屬性與私有屬性提供公開get、set方法兩種方式對比 // Degenerate classes like this should not be public! class Point { public double x; public double y; } // Public class with exposed immutable fields - questionable public final class Time { …

22個值得收藏的android開源碼-UI篇

本文介紹了android開發人員中比較熱門的開源碼&#xff0c;這些代碼絕大多數能夠直接應用到項目中。FileBrowserView 一個強大的文件選擇控件。界面比較美麗&#xff0c;使用也非常easy。 特點&#xff1a;能夠自己定義UI&#xff1b;支持復制、剪切、刪除、移動文件&#xff1…

現代制造工程02:第一部分——刀具(含2個易考點)

一、金屬切削原理 可以看出哪些性能參數是同向性得&#xff0c;并且知道性能參數與三要素有什么關系 易考點&#xff1a;三個變形區 易考點&#xff1a;磨損種類以及磨損階段、磨頓標準

Fortran向C傳遞NULL值

在很多C或C的頭文件定義中&#xff0c;NULL被指定定義為0&#xff0c;這里不再具體展開 gfortran的手冊關于iso c binding的章節&#xff0c;定義NULL如下 Moreover, the following two named constants are defined: NameType C_NULL_PTRC_PTRC_NULL_FUNPTRC_FUNPTRBoth are e…

視覺slam重點知識筆記

1、除了基本矩陣和本質矩陣&#xff0c;我們還有一種稱為單應矩陣&#xff08;Homography&#xff09;H 的東西&#xff0c;它 描述了兩個平面之間的映射關系。若場景中的特征點都落在同一平面上&#xff08;比如墻&#xff0c;地面等&#xff09;&#xff0c;則可以通過單應性…

iOS開發之share第三方登錄以及分享

&#xff08;1&#xff09;官方下載ShareSDK iOS 2.8.8&#xff0c;地址&#xff1a;http://sharesdk.cn/ &#xff08;2&#xff09;根據實際情況&#xff0c;引入相關的庫&#xff0c;參考官方文檔。 &#xff08;3&#xff09;在項目的AppDelegate中一般情況下有三個操作&am…

Linux磁盤的劃分

磁盤的組成&#xff1a; 磁道&#xff1a;track 扇區&#xff1a;sector (512字節) 磁頭&#xff1a;head 柱面&#xff1a;cylinder MBR/msdos 分區模式 1--4個主分區&#xff0c;或者0--3個主分區加1個擴展分區&#xff08;n個邏輯分區&#xff09; 最大支持容量為2.2TB的磁…

opencv的pnp()算法接口是相對于3D點,輸出的是相機與3D點之間的R和T

1、情況一&#xff1a; 兩幀圖像 -》 提取特征-》特征匹配-》通過2d-2d計算 F基礎矩陣、E 本質矩陣 、H 單一性矩陣 -》解析出 相機自身的運動R和T -》再通過三角化&#xff0c;將2d點轉為相機的3d點&#xff08;每個空間點在兩個相機坐標系下的投影3D坐標與像素2D坐標&#…