Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Tkinter][Python3.6] Cambiar color celda TreeView
#1
Hola buenas, se puede cambiar el color de fondo de una celda en concreto de un treeview según la información que contenga ?? En plan que si contiene un 0 el fondo sea verde, si contiene un 1 el fondo sea naranja y si contiene un 2 el fondo sea rojo
Responder
#2
Hola, acá tenés un código de ejemplo sobre cómo aplicar estilos sobre una celda: https://riptutorial.com/tkinter/example/...a-treeview.

En tu caso deberías, además, atender al evento disparado cuando el contenido de una celda cambia, para poder también actualizar el estilo.

Saludos
Responder
#3
(12-11-2018, 11:45 PM)Francisco escribió: Hola, acá tenés un código de ejemplo sobre cómo aplicar estilos sobre una celda: https://riptutorial.com/tkinter/example/...a-treeview.

En tu caso deberías, además, atender al evento disparado cuando el contenido de una celda cambia, para poder también actualizar el estilo.

Saludos


Buenas siento reabrir este tema pero me ocurre algo curioso:



Con este código:

  1. from tkinter import *
  2.  
  3. import tkinter as tk
  4.  
  5. from tkinter import ttk
  6.  
  7. from datetime import *
  8.  
  9. import time
  10.  
  11. import calendar
  12.  
  13.  
  14.  
  15. class Treeviewr:
  16.  
  17.  
  18.     def __init__(self):
  19.  
  20.  
  21.         # MAIN WINDOW
  22.  
  23.  
  24.  
  25.         self.root = Tk()
  26.  
  27.         self.root.title("PRUEBAS")
  28.  
  29.         self.root.geometry()
  30.  
  31.  
  32.  
  33.     # PANEL 1
  34.  
  35.  
  36.  
  37.         self.caj1 = ttk.Frame(self.root)
  38.  
  39.         self.caj1.grid(row=0, column=0)
  40.  
  41.  
  42.  
  43.     # PANEL 2
  44.  
  45.  
  46.  
  47.         self.caj2 = ttk.Frame(self.root)
  48.  
  49.         self.caj2.grid(row=1, column=1)
  50.  
  51.  
  52.  
  53.     #STYLES TREEVIEW
  54.  
  55.  
  56.  
  57.         self.styletree= ttk.Style()
  58.  
  59.         self.styletree.configure('T.Treeview')
  60.  
  61.  
  62.  
  63.     # TREEVIEW
  64.  
  65.  
  66.  
  67.         self.info = ttk.Treeview(self.caj1, style='T.Treeview', columns=('col1', 'col2', 'col3', 'col4'))
  68.  
  69.         self.info.grid(row=0, column=0, ipadx=200)
  70.  
  71.  
  72.  
  73.         self.info.insert("", tk.END, text='Prueba0', values=('18', 'Juan'), tags=('prob',))
  74.  
  75.         self.info.insert("", tk.END, text='Prueba1', values=('20', 'Adrián'), tags=('prob',))
  76.  
  77.         self.info.insert("", tk.END, text='Prueba2', values=('23', 'Felipe', '3'), tags=('prob',))
  78.  
  79.  
  80.  
  81.         self.info.tag_configure('prob', background='black', foreground='red')
  82.  
  83.  
  84.  
  85.  
  86.  
  87.         self.info.heading("#0", text='COLUMNA1')
  88.  
  89.         self.info.heading('col1', text='COLUMNA2')
  90.  
  91.         self.info.heading('col2', text='COLUMNA3')
  92.  
  93.         self.info.heading('col3', text='COLUMNA4')
  94.  
  95.         self.info.heading('col4', text='COLUMNA5')
  96.  
  97.         self.info.column("#0", minwidth=0, width=5)
  98.  
  99.         self.info.column('col1', minwidth=25, stretch=0, anchor='center')
  100.  
  101.         self.info.column('col2', minwidth=25, stretch=0, anchor='center')
  102.  
  103.         self.info.column('col3', minwidth=25, stretch=0, anchor='center')
  104.  
  105.         self.info.column('col4', minwidth=25, stretch=0, anchor='center')
  106.  
  107.  
  108.  
  109.         self.root.mainloop()
  110.  
  111.  
  112.  
  113. def main():
  114.  
  115. my_app = Treeviewr()
  116.  
  117.  
  118.  
  119.  
  120.  
  121. if __name__ == '__main__':
  122.  
  123. main()


A mí no me aparece el estilo de las celdas ¿Por qué?. Lo he metido tal cual en otro ordenador con Ubuntu (En el pc de sobremesa tengo Debian 10) y funciona perfectamente. Puede haber algo mal configurado o instalado de python3? o el código es incorrecto?.

Muchas gracias.
Responder
#4
El código parece correcto. Puede que tengas una versión antigua de Tk en tu Debian que no soporte estilos.

Saludos!
Responder
#5
(14-12-2019, 07:26 PM)Francisco escribió: El código parece correcto. Puede que tengas una versión antigua de Tk en tu Debian que no soporte estilos.

Saludos!
Muchas gracias Francisco. Pues nada. Va siendo hora de hacer una nueva instalación limpia de Debian.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)