es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python cómo cambiar el color en una celda específica en el treeview ttk.

Tengo una interfaz gráfica de usuario simple que muestra en pantalla una tabla con números y quiero colorear algunas celdas específicas. ¿Alguien sabe cómo hacerlo?

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

def mostrar_tabla():
    texto = ""
    for letra in textDate.get():
        if letra != '/':
            texto = texto + letra
    print(texto)
    matriz_numeros = [[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 matriz_numeros:
        tv.insert('', 'end', values=i)

def guardar_datos():
    fecha = textDate.get()
    mostrar_tabla()

root = tk.Tk()
canvas = tk.Canvas(root, height=700, width=700, bg="#A2A2A2")
root.title("prueba")
canvas.pack()
etiqueta_fecha = tk.Label(text="fecha", bg="#A2A2A2")
etiqueta_fecha.place(x=15, y=50)
texto_fecha = tk.StringVar()
entrada_fecha = tk.Entry(textvariable=texto_fecha)
entrada_fecha.place(x=15, y=70, width=100, height=15)
boton_enviar = tk.Button(root, text="enviar", width="10", height="1", bg="#FFFFFF", command=guardar_datos)
boton_enviar.place(x=15, y=100)
marco = tk.Frame(root)
root.mainloop()
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para colorear celdas específicas en la tabla, puede usar el método tag_configure del widget ttk Treeview. Primero, tendría que agregar etiquetas a las celdas que desee colorear de manera diferente usando el método tag_has.

    Por ejemplo, para colorear en rojo la celda en la primera fila y primera columna, puede agregar una etiqueta a la celda utilizando tag_has y luego configurar la etiqueta con un color de fondo específico usando tag_configure. Aquí se explica cómo puede modificar la función show_table() para lograr esto:

    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()
    
        # Agregar etiquetas a celdas específicas
        tv.tag_configure('red', background='red')
        tv.tag_has('red', 'cell', 0, 'iid_0')
    
        for i in number_array:
            tv.insert('', 'end', values=i)
    
    

    En este ejemplo, el método tag_configure se utiliza para crear una nueva etiqueta llamada 'red' con un color de fondo rojo. Luego, se utiliza el método tag_has para aplicar la etiqueta 'red' a la celda en la fila 0, columna 0 ('cell', 0, 'iid_0').

    Puede personalizar aún más la apariencia de otras celdas agregando más etiquetas y usando los métodos tag_has y tag_configure según sea necesario.

Comments are closed.