Tkinter Treeview 建立不同颜色的行内容

Tkinter Treeview 建立不同颜色的行内容

建立Treeview控件内容时,常常会需要在不同行之间用不同底色作区分,以方便使用者查看,若是想要设计这方面的程序,可以使用Text控件的标签。Treeview控件有tag_configure( )方法,可以使用这个方法建立标签,然后定义此标签的格式,可参考下列指令。

tag_configure("tagName", options, ...)

上述第一个参数tagName是标签名称,可以用此名称将此标签导入栏位数据。options的可能参数如下。

(1)background:标签背景颜色。

(2)font:字形设置。

(3)foreground:标签前景颜色。

(4)image:图像与列表同时显示。

要将标签导入栏位使用的是insert( )方法,这时需在此方法内增加tags参数设置,如下所示。

insert(..., tags = "tagName")

最后要讲解的是,在企业实际应用中数据量通常很庞大,这时无法使用单笔数据一步一步建立Treeview控件内容,适度使用Python的数据结构与遍历方法可以让程序变得有效率。在下列程序实例中使用字典存储数据,然后将此字典以循环方式导入Treeview控件内。

示例1

在这个实例中将偶数行使用蓝色底显示。

from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("apidemos.com")

stateCity = {"Eleanor":"Chicago",
             "California":"LosAngeles",
             "Texas":"Houston",
             "Washington":"Seattle",
             "aaa":"aaa1",
             "bbb":"bbb1",
             "ccc":"ccc1",
             "ddd":"ddd1"}
# 建立Treeview
tree = Treeview(root,columns=("cities"))
# 建立栏标题
tree.heading("#0",text="State") # 图标栏
tree.heading("cities",text="City")
# 格式化栏位
tree.column("cities",anchor=CENTER)
# 建立内容,行号从1算起偶数行是用浅蓝色底
tree.tag_configure("evenColor",background="lightblue") # 设置标签
rowCount = 1
for state in stateCity.keys():
    if (rowCount % 2 == 1):
        tree.insert("",index=END,text=state,values=stateCity[state])
    else:
        tree.insert("",index=END,text=state,values=stateCity[state],
                    tags=("evenColor"))   # 建立浅蓝色底
    rowCount += 1                         # 行号数加1
tree.pack()

root.mainloop()

输出:

Tkinter Treeview 建立不同颜色的行内容

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程