Einfärben einer Spreadshet Zeile nach Knopfdruck

Fragen zu Tkinter.
Antworten
FinneX
User
Beiträge: 2
Registriert: Montag 11. Juli 2022, 13:49

Hallo Zusammen,

vielleicht kann mir hier jemand helfen. Ich versuche gerade ein kleines Programm zu coden, bei dem auf Knopfdruck eine Zeile der eingelesenen .xlsx Datei grün eingefärbt werden soll. Leider funktioniert dies noch nicht so ganz... Meine Funktion soll "farbe" heißen, nur ich weiß noch nicht so recht wie ich diese Funktion definiere. Kann mir hier jemand helfen und mir auf die Sprünge helfen?

Code: Alles auswählen

import pandas as pd 
import tkinter as tk
from tkinter import *

eingabe = pd.read_excel("xxx.xlsx")
eingabe.drop(eingabe.columns[[0,1,2,3,4,5,9,10,11,12,17]], axis=1, inplace = True)
eingabe["Liefer-/Fälligkeitsdatum"] = eingabe["Liefer-/Fälligkeitsdatum"].dt.strftime("%d.%m.%Y")
writer = pd.ExcelWriter("yyy.xlsx")
eingabe.to_excel(writer,"Sheet1")
writer.save()

ausgabe = tk.Tk()
ausgabe.iconbitmap("ccc.ico")
ausgabe.title("Sortierliste")
ausgabe.geometry("1900x900")

df = pd.read_excel("aaa.xlsx")
df.drop(df.columns[[0]], axis=1, inplace = True) 
n_rows = df.shape[0]
n_cols = df.shape[1]

column_names = df.columns
i=0
for j, col in enumerate(column_names):
    text = Text(ausgabe, width=16, height=1.2, bg = "#9BC2E6")
    text.config(font=("Arial", 20))
    text.grid(row=i,column=j)
    text.insert(INSERT, col)
 
button = {}
      
for i in range(n_rows):
    for j in range(n_cols):
        text = Text(ausgabe, width=16, height=1.2)
        text.config(font=("Arial", 20))
        text.grid(row=i+1,column=j)
        text.insert(INSERT, df.loc[i][j])
        button[i]=tk.Button(ausgabe, text="Sortiert", bg = "green", command = farbe)
        button[i].grid(row=i+1,column=8)
  
ausgabe.mainloop()
Benutzeravatar
Dennis89
User
Beiträge: 1376
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

wenn du bei 'pandas' bleiben willst, schau mal ob im folgenden Link eine Lösung für ich dabei ist:
https://stackoverflow.com/questions/441 ... excel-cell

Wenn du mal 'openpyxl' versuchen möchtest:
https://stackoverflow.com/questions/304 ... g-openpyxl

'farbe' sollte dann aber nicht deine einzigste Funktion sein. Bei deinem gezeigten Code sollte wirklich alles, außer den Importen, in Funktionen stecken. 'from tkinter import *' ist überflüssig und sollte nicht verwendet werden. Nutze 'tk' konsequent, dann sieht man wo welcher Namen her kommt.

Vielleicht schaust du dir hier im tkinter-Forum mal ein paar Beispiele zum Programmaufbau an.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
FinneX
User
Beiträge: 2
Registriert: Montag 11. Juli 2022, 13:49

@Dennis89

Danke für deine Hilfe! Ich habe mein Problem jetzt soweit gelöst und werde den Code noch etwas "verschönern"
Antworten