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()
输出: