Python 如何通过标签更改Treeview中项目的背景/前景?
我想在Treeview中为标记应用不同的背景,但当我将标记设置为“负”,并尝试将标记配置为黑色背景时,它仍然返回白色背景 我尝试应用样式并将背景设置为所需的RGB到Treeview,但背景仍为白色。我还尝试设置标签,并将标签背景配置为所需的RGB,但它仍然返回为白色Python 如何通过标签更改Treeview中项目的背景/前景?,python,tkinter,tags,treeview,styles,Python,Tkinter,Tags,Treeview,Styles,我想在Treeview中为标记应用不同的背景,但当我将标记设置为“负”,并尝试将标记配置为黑色背景时,它仍然返回白色背景 我尝试应用样式并将背景设置为所需的RGB到Treeview,但背景仍为白色。我还尝试设置标签,并将标签背景配置为所需的RGB,但它仍然返回为白色 for row in rows: self.treeplan.insert('', 'end', text=str(cpt), values=(row
for row in rows:
self.treeplan.insert('', 'end', text=str(cpt),
values=(row[1], row[2], row[3], row[4],
row[5], row[6], row[7], row[8],
row[9], row[10], row[11], row[12],
row[13], row[14], row[15]),
tags='minus')
cpt += 1
self.treeplan.tag_configure('minus', background="#%02x%02x%02x" % (61, 72, 73),
foreground="red")
这里是风格:
self.style = ttk.Style(master)
self.style.theme_use("clam")
self.style.configure("mystyle.Treeview", bd=0, background="black",
foreground="white", fieldbackground="red")
self.style.configure("mystyle.Treeview.Heading", font=('Calibri', 9,
'bold'), background="#383838", foreground="white")
self.style.layout("mystyle.Treeview", [('mystyle.Treeview.treearea',
{'sticky': 'news'})])
实际上,我想将所有Treeview项目的背景设置为“#%02x%02x%02x”%(61,72,73)
**编辑:
我正在使用Treeview添加部分代码:
self.treeplan_frame = Frame(master, background=rgbcon2((39, 46, 46)))
self.treeplan_frame.grid(row=7, column=0, columnspan=8, sticky="nws", pady=10, padx=10)
self.treeplan = ttk.Treeview(self.treeplan_frame, height=19, style="mystyle.Treeview")
正如你所看到的,我试图用风格改变背景,但运气不佳。然后,我尝试通过配置标签(标签/标签)进行更改。我检查了不同的线程,我不太清楚为什么在这种情况下它不工作。顺便说一句,它是Python3.7和Tkinter 8.6。当我使用3.6时,我没有遇到任何问题,Tkinter的早期版本(我不确定是哪个版本)。我很确定'tags'关键字必须得到一个元组而不是字符串,要强制转换,只需写'minus'像('minus',)这样的字 编辑:文档实际上说“tags”关键字应该得到一个列表,但我已经看到了很多提供元组的示例。我想这是因为元组可以解析为列表。在以下位置可以找到解决方案: 根据链接,问题在于Tkinter版本。人们认为问题在于Python版本,但这是因为Python版本使用了错误的Tkinter版本
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'))
不,不幸的是@Cesar Cuevas运气不好。好的,只是为了确保,你能试着写“tag”而不是“tags”,在这种情况下,一定要像我之前说的那样给字符串一个元组。我已经尝试了
tag
而不是tags
,当你建议使用元组时,我也尝试了两个tag/s案例!另外,为了确认,我已经检查过了,以防我覆盖了关于背景的初始指令!你有可能发布你的全部代码吗?至少只有与GUI相对应的东西我只是想确保没有任何东西影响应用程序的行为,主要是因为我刚刚测试了你的代码,并且它工作正常。