#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()
Выход