插入带有标签的行时出现 Tkinter Treeview 问题 [英] Tkinter Treeview issue when inserting rows with tags

查看:12
本文介绍了插入带有标签的行时出现 Tkinter Treeview 问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚从 python 3.6 切换到 python 3.7.我有一个函数可以在带有标签的 Treeview 树中插入行.标签用于为插入树的行提供前景色和背景色.当我使用 python 3.6 时,我的代码工作正常.切换到 3.7 后,插入的行没有被赋予背景或前景色,而只被赋予了白色背景和黑色前景色.

I have just switched from python 3.6 to python 3.7. I have a function which inserts rows in a Treeview tree with tags. The tags are used for giving a foreground color and a background color to the rows inserted to the tree. My code was working ok when I was using python 3.6. Once I switched to 3.7 the rows inserted were not given a background or foreground color but where only given a white background and a black foreground color.

tkinter.ttk 从 python 3.6 到 3.7 似乎没有关于标签配置或树插入的语法更改.

There doesn't seem to be a syntax change in tkinter.ttk from python 3.6 to 3.7 regarding tag configuration or tree insert.

tree.tag_configure('MATCHED', foreground='dark green', background='gray98')
tree.tag_configure('UNMATCHED', foreground='red2', background='gray98')

if match_status== '1':
    tree.insert('', 'end', text=df_row, values=my_value, tag='MATCHED')
elif match_status == '0':
    tree.insert('', 'end', text=df_row, values=my_value, tag='UNMATCHED')`

预计当将行插入到树中时,会被赋予正确的背景和前景色.

It is expected that when the rows are inserted to the tree to be given the correct background and foreground color.

感谢任何帮助.

推荐答案

看起来问题是由较新版本的 tkinter 引起的,而不是较新版本的 Python.https://bugs.python.org/issue36468https://core.tcl-lang.org/tk/info/509cafafae

Looks like the issue was caused by a newer version of tkinter, not a newer version of Python. This was reported in https://bugs.python.org/issue36468 and https://core.tcl-lang.org/tk/info/509cafafae

这是一个建议的解决方案.它应该是向后和向前兼容的:

Here is a proposed solution. It should be both backward and forward compatible:

def fixed_map(option):
    # Fix for setting text colour for Tkinter 8.6.9
    # From: https://core.tcl.tk/tk/info/509cafafae
    #
    # 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-safe.
    return [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'))

这篇关于插入带有标签的行时出现 Tkinter Treeview 问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆