Seite 1 von 1

Einfärben einer Spreadshet Zeile nach Knopfdruck

Verfasst: Montag 11. Juli 2022, 13:54
von FinneX
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()

Re: Einfärben einer Spreadshet Zeile nach Knopfdruck

Verfasst: Montag 11. Juli 2022, 21:53
von Dennis89
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

Re: Einfärben einer Spreadshet Zeile nach Knopfdruck

Verfasst: Dienstag 12. Juli 2022, 06:21
von FinneX
@Dennis89

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