tkinter中treeview隔行显示不同的颜色

隔行显示不同颜色的代码,这个牵涉到背景颜色,在3.8版的tkinter,要加多一些代码,才能让背景颜色起作用。

这段要多加的代码就是:

1
2
3
4
5
6
def fixed_map(option):
    return[elm for elm in style.map('Treeview',query_opt=option)
    if elm[:2]!=('!disabled','!selected')]
  
style=Style()
style.map('Treeview',foreground=fixed_map('foreground'),background=fixed_map('background'))

  以下是全部代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from tkinter import *
from tkinter.ttk import *
  
def tree_color(): # 表格栏隔行显示不同颜色函数
    items=tree1.get_children() # 得到根目录所有行的iid
    i=0 # 初值
    for hiid in items:
        if i/2!=int(i/2): # 判断奇偶
            tag1='' # 奇数行
        else:
            tag1='even' # 偶数行
        tree1.item(hiid,tag=tag1) # 偶数行设为浅蓝色的tag='even'
        i+=1 # 累加1
  
root = Tk() # 源码来自wb98.com
  
img1=PhotoImage(file='16-1.png')
img2=PhotoImage(file='16-2.png')
  
tree1 = Treeview(root, columns=('qy', 'dz'))
# 创建树表格组件,栏目有3个:#0, qy, dz
  
tree1.column('#0', width=120, anchor=CENTER)
tree1.column('qy', width=90, anchor=CENTER)
tree1.column('dz', width=180, anchor=CENTER)
# 定义3个栏目的宽度,对齐方法,宽度是否窗体变化
  
tree1.heading('#0', text='')
tree1.heading('qy', text='区域')
tree1.heading('dz', text='地址')
# 定义3个栏目的表头文字
  
tree1.insert('', END, text='广州市',values=('海珠区','阅江中路380号'))
tree1.insert('', END, text='深圳市',values=('南山区','华侨城侨香路11号'))
tree1.insert('', END, text='东莞市',values=('南城区','元美东路3号济亨网'))
  
tree1.insert('', END, text='长沙市',values=('雨花区','韶山中路108号'))
tree1.insert('', END, text='湘潭市',values=('岳塘区','书院路42号云峰工作室'))
tree1.insert('', END, text='衡阳市',values=('蒸湘区','祝融路名都花园B9栋107室'))
  
tree1.insert('', END, text='长沙市',values=('岳麓区','梅溪湖路复兴小区709号'))
tree1.insert('', END, text='广州市',values=('白云区','下塘西路545号'))
  
tree1.pack(fill=BOTH,expand=True)
  
# 3.8版要多加的代码------------
def fixed_map(option):
    return [elm for elm in style.map("Treeview", query_opt=option) if elm[:2] != ("!disabled", "!selected")]
  
style = Style()
style.map("Treeview", foreground=fixed_map("foreground"), background=fixed_map("background"))
# 3.8版要多加的代码------------
  
#定义背景色风格
tree1.tag_configure('even', background='lightblue') # even标签设定为浅蓝色背景颜色
  
tree_color() # 启动程序,根据奇偶行设为不同的背景颜色
  
root.mainloop()

  

posted on   帅胡  阅读(699)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2016-03-16 Axure RP Extension for Chrome

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示