Forum >> Programmazione Python >> GUI >> Problema con Tkinter - raddoppio tuple

Pagina: 1

Buongiorno a tutti,
sto riscontrando un forte problema con un pezzo di codice; questo in teoria dovrebbe regolare la visualizzazione di alcune tabelle andando a settare due colori differenti di bg per stringhe pari e dispari ed impostando fg rosso a tutti i dati presenti nella colonna 2 di tutte le tabelle.

In teoria...in pratica mi trovo con tutte le righe delle tabelle raddoppiate con la prima riga normale (fg nero e tutti i dati presenti) e la seconda solo con la colonna 2 compilata in rosso :dont-know:




il pezzo di codice incriminato è il seguente:




    def create_table(self, data, col1_header, col2_header, col3_header, col1_width, col2_width, col3_width):
        table = ttk.Treeview(self, columns=("Col1", "Col2", "Col3"))

        table.heading("#0", text=" ")
        table.column("#0", width=1, stretch=False)

        table.heading("Col1", text=col1_header)
        table.heading("Col2", text=col2_header)
        table.heading("Col3", text=col3_header)


        for i, (col1_val, col2_val, col3_val) in enumerate(data):
            values = (col1_val, col2_val, col3_val)
            if i % 2 == 0:
                table.insert("", "end", values=(col1_val, col2_val, col3_val), tags=("even"))
                item_id = table.insert("", "end", values=col2_val, tags="red1")
                table.item(item_id, values=("", col2_val, ""))
            else:
                table.insert("", "end", values=(col1_val, col2_val, col3_val), tags=("odd"))
                item_id = table.insert("", "end", values=col2_val, tags="red1")
                table.item(item_id, values=("", col2_val, ""), tags="red1")
                                        
        table.tag_configure("even", background="#f0f0f0")
        table.tag_configure("odd", background="white")
        table.tag_configure("red1", foreground="red")
        

        table.column("Col1", width=col1_width, stretch=False)
        table.column("Col2", width=col2_width, stretch=False)
        table.column("Col3", width=col3_width, stretch=False)        
        
        table.column("Col2", anchor="center")
        table.column("Col3", anchor="center")
                
        return table



non ne esco, help ;(



print("- il Ross -")
La "doppia riga" Ti è data dalle doppie istruzioni "insert", lo "item_id" dovresti assegnarlo direttamente dalla prima istruzione di insert ... in ogni caso, il tentativo di assegnare un nuovo tag allo item_id assegnato nella rilevazione causerebbe la creazione di un nuovo item, con treeview non credo sia possibile colorare una singola cella, a quanto mi risulta i tags vengono applicati ad un intero item.




Dovresti accontentarti della sola colorazione alternata oppure crearti un tuo proprio controllo con le proprietà che Ti occorrono, sfruttando il gestore di geometria grid e una collezione di label o entry non è molto difficile farne uno.

Fatti non foste a viver come bruti...


Pagina: 1



Esegui il login per scrivere una risposta.