Python 如何更改 ttk 树视图中特定单元格的颜色

问题描述 投票:0回答:3

我有一个简单的 GUI,它在屏幕上显示一个带有数字的表格,我想为一些特定的单元格着色。有人知道我该怎么做吗?

import tkinter as tk
from tkinter import *
from tkinter import ttk

def show_table():
    text = ""
    for letter in textDate.get():
        if letter != '/':
            text = text + letter
    print(text)
    number_array = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    frn = Frame(root)
    frn.place(x=15, y=140)
    tv = ttk.Treeview(frn, columns=(1, 2, 3), show="headings", height="5")
    tv.pack()
    for i in number_array:
        tv.insert('', 'end', values=i)
def save_data():
    date = textDate.get()
    show_table()

root = tk.Tk()
canvas = tk.Canvas(root, height=700, width=700, bg="#A2A2A2")
root.title("test")
canvas.pack()
datelable = tk.Label(text="date", bg="#A2A2A2")
datelable.place(x=15, y=50)
textDate = tk.StringVar()
textEntry = tk.Entry(textvariable=textDate)
textEntry.place(x=15, y=70, width=100, height=15)
finishButton = tk.Button(root, text="send", width="10", height="1", bg="#FFFFFF", command=save_data)
finishButton.place(x=15, y=100)
frame = tk.Frame(root)
root.mainloop()
python tkinter treeview ttk
3个回答
2
投票

Python 如何更改 ttk 树视图中特定单元格的颜色

您无法更改

Treeview
小部件中特定单元格的颜色。格式设置只能应用于整行。颜色只能与标签一起应用,标签只能应用于整个项目,而不是项目的一部分。


0
投票

通过用网格结构替换树结构,我们可以为单个单元格着色示例如下

import tkinter as tk
from tkinter import *
from tkinter import ttk
import random #for random color selection

def show_table():
    text = ""
    for letter in textDate.get():
        if letter != '/':
            text = text + letter
    print(text)
    number_array = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
    for r in range(len(number_array)):
        for c in range(len(number_array[r])):
            colour = "#%06x" % random.randint(0, 0xFFFFFF)
            b = Entry(root, text = StringVar(value=number_array[c][r]), bg = colour)
            b.grid(row = r, column = c)

def save_data():
    date = textDate.get()
    show_table()

root = tk.Tk()
canvas = tk.Canvas(root, height=700, width=700, bg="#A2A2A2")
root.title("test")
datelable = tk.Label(text="date", bg="#A2A2A2")
datelable.place(x=15, y=50)
textDate = tk.StringVar()
textEntry = tk.Entry(textvariable=textDate)
textEntry.place(x=15, y=70, width=100, height=15)
finishButton = tk.Button(root, text="send", width="10", height="1", bg="#FFFFFF", command=save_data)
finishButton.place(x=15, y=100)
frame = tk.Frame(root)
root.mainloop()

输出


0
投票

出于这个原因,我制作了一个表格视图。 tableview.py

https://github.com/Deagek/tableview/blob/main/README.md

我创建这个的原因是我需要一个类似于 ttk.treeview 的小部件,但它允许我突出显示特定的单元格,而树视图无法做到这一点。我也希望有类似的外观和感觉,这样感觉就有点一致(如果您愿意,您可以更改列分隔符)。

tableview 是一个允许单元格突出显示和排序的表格。与树视图类似,尽管您无法在其中移动项目。一些特点:

您可以将函数单独绑定到单元格,并完全控制每个单元格。 与树视图一样,您也可以拉伸每一列。 双击列分隔符会将列对齐到最小大小(列标题文本)。 单击列本身将对列进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.