Tkinter Treeview tag_configure失效问题

最近在交付一个带界面的工具软件时出现了一点问题,把源码拿到测试机上编译时发现界面中的Treeview不带颜色,在我自己的开发环境是正常的。在分析一通之后,发现测试机的python是3.8,而我的是3.6,考虑是版本问题。

等效源码如下:


import tkinter
from tkinter import ttk  #导入内部包win = tkinter.Tk()
win.geometry("400x350")tree = ttk.Treeview(win)
tree.tag_configure('FAIL', background='red', foreground="white")
tree['show'] = 'headings'
tree["columns"] = ("id", "name")
tree.column("id", width=75)  # 表示列,不显示
tree.column("name", width=150)
# 表头设置
tree.heading("id", text="ID")
tree.heading("name", text="姓名")
# 插入数据
tree.insert("", "end", values=("135", "张三"),tags="FAIL")
tree.grid(row=3, column=0, columnspan=1, sticky="NSEW")
tree.pack()
win.mainloop()

在python3.7.3+环境中,运行结果如下:

可以看到代码中对tag=FAIL的数据项应该标记为红色,但运行结果却显示该设置并没有生效。

解决办法

添加如下代码:

def fixed_map(option):# Returns the style map for 'option' with any styles starting with# ("!disabled", "!selected", ...) filtered out# style.map() returns an empty list for missing options, so this should# be future-safereturn [elm for elm in style.map("Treeview", query_opt=option)if elm[:2] != ("!disabled", "!selected")]
style = ttk.Style()
style.map("Treeview",foreground=fixed_map("foreground"),background=fixed_map("background"))

全部代码:


import tkinter
from tkinter import ttk  #导入内部包win = tkinter.Tk()
win.geometry("400x350")def fixed_map(option):# Returns the style map for 'option' with any styles starting with# ("!disabled", "!selected", ...) filtered out# style.map() returns an empty list for missing options, so this should# be future-safereturn [elm for elm in style.map("Treeview", query_opt=option)if elm[:2] != ("!disabled", "!selected")]
style = ttk.Style()
style.map("Treeview",foreground=fixed_map("foreground"),background=fixed_map("background"))tree = ttk.Treeview(win)
tree.tag_configure('FAIL', background='red', foreground="white")
tree['show'] = 'headings'
tree["columns"] = ("id", "name")
tree.column("id", width=75)  # 表示列,不显示
tree.column("name", width=150)
# 表头设置
tree.heading("id", text="ID")
tree.heading("name", text="姓名")
# 插入数据
tree.insert("", "end", values=("135", "张三"),tags="FAIL")
tree.grid(row=3, column=0, columnspan=1, sticky="NSEW")tree.pack()
win.mainloop()

运行结果:

原因分析

写在后面:好久没更新了,感觉这些积累很没有意义。

Tkinter Treeview tag_configure失效问题相关推荐

  1. Tkinter Treeview Color Bug

    百度一大堆Tkinter多简单多好用,尝试利用Treeview显示测试结果,期望在错误结果的条目上显示红色,正确的结果条目显示绿色,然而发现想要设置Treeview Item的背景色时,居然无法实现, ...

  2. python tkinter treeview制作_python-3.x – Tkinter Treeview标题样式

    我想更改树视图标题的背景颜色.我已经确定了Treeview.Heading布局的元素选项,负责这个:Treeheading.cell.问题是这个设置不适用于'vista'主题(由于我假设的绘图问题). ...

  3. 【Tkinter TreeView】

    目录 一.前言 二.TreeView的引入 三.TreeView的属性 四.TreeView的item选项 五.列标识符 六.TreeView触发事件 七.TreeView点击事件 八.TreeVie ...

  4. python 显示数据库数据tk_如何使用python显示从Mysql表获取的Tkinter treeview中的数据...

    我已经用treeview创建了一个表,我想插入从mysql表中获取的数据.如果有人能帮助我,因为我已经尽了最大的努力,但仍然没有成功.使用这个语句tree.insert("", 1 ...

  5. python tkinter treeview 高亮_满满的成就感~如何用python让你的想法拥有可操作性?(一)...

    想法:用python+tkinter+pypyodbc+xlrd+xlwt实现从已有数据库调取你想要的数据,生成EXCEL.xls文件. 生活处处有Idea 一.需求分析. 完成的界面如下图,左上方通 ...

  6. python tkinter treeview_Python tkinter treeview列大小

    我在tkinter中有一个Treeview(在Linux上是python3.6,但在windows上也是如此),我用它来模拟一种电子表格布局.我的问题是,如果我运行下面的示例代码并调整大小,比如&qu ...

  7. Python+tkinter+Treeview模拟表格并设置字体和颜色

    清华大学出版社-第10届高等学校计算机程序设计课程论坛 中国大学MOOC"Python程序设计基础"免费学习地址 2020年秋季学期Python教材推荐与选用参考 推荐图书: &l ...

  8. python窗口显示表格_Python tkinter Treeview创建GUI表格(可编辑、新建单元格)

    版本:Python3.7 1.使用Treeview创建表格界面 from tkinter import ttk from tkinter import * root = Tk() # 初始框的声明 c ...

  9. tkinter treeview加入滚动条

    import tkinter as tk from tkinter import ttkclass Test:def __init__(self,w1):self.w1 = w1self.w1.con ...

最新文章

  1. 树莓派避障小车(python)
  2. 我是怎么提高单片机编程能力的?
  3. 第04课:深度学习框架 PyTorch
  4. 游戏行业的人工智能设计:AI的设计和实施
  5. [原]好玩的Linux,关于时间cal命令
  6. 操作系统(二): 进程与线程
  7. HTML/CSS水平垂直居中方法(待补充)
  8. 2017.9.10 ricehub 思考记录
  9. java模拟网银登录_Java模拟网上银行业务
  10. 【5G核心网】 GTP协议
  11. 委托、事件 茴字有几种写法
  12. Android系统的system/app和system/priv-app
  13. 青柠开车Spring Cloud(三) —— Spring cloud Eureka
  14. 傻子,疯子,一根筋的人才能创业成功!
  15. python输入数据带单位_python – Pandas用单位插入数据
  16. winform listbox控件简单使用。
  17. JS 内存泄漏与垃圾回收机制
  18. 在 Adob​​e MAX 深入研究 UI/UX 设计
  19. Hibernater由于外键设置不为空,导致在主键级联删除时失败解决办法!
  20. 微信小程序 错题记事本 111111

热门文章

  1. LaTex排版,如何输入商标R符号,TM符号, 版权c符号
  2. 给刚入市朋友的几点建议
  3. Shell编程中的数组定义、遍历
  4. linux卸载cuda10.0,Ubuntu卸载cuda10.0
  5. mysql 分位数 知乎_分位数的意义是什么?
  6. 功能测试---正交实验法
  7. PPT形状的多种玩法
  8. java jtextarea 滚动条_Java Swing JTextArea自动添加滚动条
  9. 解决photoshop菜单卡顿,闪动,停顿问题
  10. 为什么毕业一年了工资还是只有7K