日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

使用Python中Tkinter模塊的Treeview?組件顯示ini文件操作_python

作者:gc_2299 ? 更新時間: 2022-11-17 編程語言

前言:

Tkinter模塊的Treeview組件類似于Dev中的treelist控件,但前者還可以當做樹控件和表格控件使用,雖然功能可能沒有dev和winform控件那么強大,但是在Tkinter中算是比較復雜、用處較多的了。

Treeview組件位于ttk模塊,該模塊自Tk8.5開始引入,如果 Python 未基于 Tk 8.5 編譯,只要安裝了 Tile 仍可訪問本模塊。Treeview支持按層次結構展示一組數據項,用excel做了個簡單的示意圖(如下所示),Treeview 組件左側可以理解為一個樹控件,右側可以理解為一個表格,一個數據條目占據一行,橫跨樹控件和表格控件。Treeview 組件用show屬性設置顯示方式,值為tree則僅顯示樹控件,值為headings默認僅顯示表格,值為tree headings則顯示全部,默認為顯示全部。Treeview 組件使用#0引用樹控件所在列,而其它列則可以用#1~#No的數字引用,也可以用列名引用。而向Treeview 組件中插入一行值時,用Text屬性賦予樹控件所在列的值,用values數控賦予其它列的值。

本文中使用的Treeview 組件的主要函數如下所示:

序號 函數名 函數說明
1 Treeview () Treeview 組件的創建函數,可以同時指定父控件、columns、displaycolumns、height、padding、selectmode、show等屬性,詳細介紹請見參考
2 heading 查詢或修改某列的標題,可以設置列標題、列圖片等
3 column 查詢或修改列 column 的屬性
4 insert 函數形式為insert(parent, index, iid=None, **kw),用于插入一條新的數據條目。如果parent是另一歌數據條目的標識,則新條目為另一數據條目的下級。index 是整數或“end”,指明在父項的子項列表中的插入位置

序號函數名函數說明1Treeview ()Treeview 組件的創建函數,可以同時指定父控件、columns、displaycolumns、height、

ini文件算是個兩層結構,節屬于第一個層,而鍵值對屬于第二層,本文基于Treeview 組件顯示ini文件內容,

全部代碼及程序運行效果如下所示:

# coding=gbk

import tkinter as tk
from tkinter import ttk
import configparser
from tkinter.filedialog import askopenfilename

def BrowseDri():
    txtFilePath.set(askopenfilename())
    tree = ttk.Treeview(window, height = 15, selectmode = "extended",columns=('key', 'value'), show="tree headings", displaycolumns="#all")
    tree.grid(row=1,column=1)
    tree.heading("#0", text="節", anchor=tk.W)
    tree.heading('key', text="鍵", anchor=tk.W)
    tree.heading('value', text="值", anchor=tk.W)
    tree.column('#0', width=100)
    tree.column('key', width=200)
    tree.column('value', width=100)

    stu_root = tree.insert("", tk.END, text="ini文件",open=True)

    cfg = configparser.ConfigParser()
    cfg.read(txtFilePath.get())
    print('readed ini file')

    sections = cfg.sections()
    for sec in sections:
        print(sec)
        node = tree.insert(stu_root, tk.END, text=sec,open=True)
        for item in cfg.items(sec):
            print(item)
            tree.insert(node,tk.END,text='',values=(item[0],item[1]))

window=tk.Tk()
window.title('瀏覽ini文件夾')
window.geometry('600x400')
tk.Button(window,text='選擇文件',command=BrowseDri).grid(row=0,column=0)
txtFilePath=tk.StringVar()
tk.Entry(window,textvariable=txtFilePath).grid(row=0,column=1)

tk.Label(window,text='文件內容').grid(row=1,column=0)

window.mainloop()

原文鏈接:https://blog.csdn.net/gc_2299/article/details/127012899

欄目分類
最近更新