Python как изменить цвет в определенной ячейке в ttk treeview

#python #tkinter #treeview #ttk

#питон #tkinter #древовидный вид #ттк

Вопрос:

У меня есть простой графический интерфейс, который показывает на экране таблицу с цифрами, и я хочу нарисовать несколько специальных изображений. кто-нибудь знает, как я могу это сделать?

 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()  

Ответ №1:

Python как изменить цвет в определенной ячейке в ttk treeview

Вы не можете изменить цвет определенной ячейки в Treeview виджете. Форматирование может быть применено только ко всем строкам. Цвета можно применять только с помощью тегов, а теги можно применять только к элементу в целом, а не к части элемента.

Ответ №2:

Заменив древовидную структуру структурой сетки, мы можем раскрасить отдельные ячейки следующим примером

 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 = "#x" % 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()  

Выход

введите описание изображения здесь