ich habe ein kleines Programm geschrieben, es funktioniert. Aber weil ich als Programmiereinsteiger auf der Suche nach Rat in diversen Foren lese, dass globale Variablen zu vermeiden sind, wende ich mich an Euch.
Weil das Problem nur auftritt, weil ich ein GUI mit tkinter haben wollte, steht es hier.
Ich habe einen tk.Button:
Code: Alles auswählen
b_open = tk.Button(frame2, text = "Daten öffnen", command = open_file)
b_open.pack(padx = 5, pady = 5)
Code: Alles auswählen
def open_file():
global df
# Öffnen der csv-Datei
name = askopenfilename(filetypes = [("csv files","*.csv"), ("All files","*.*")],
initialdir = "F:/Python/Projekt/DataSets",
title = "Select File:")
# Dataframe aus Daten
df = pd.read_csv(name, sep = ";")
Code: Alles auswählen
b_zweid = tk.Button(frame2, text = "2D-Plot", command = zweid)
b_zweid.pack(padx = 5, pady = 5)
Problem: Es wird dann natürlich wieder askopenfilename() ausgeführt, obwohl die Daten schon geladen sind.
Ich konnte mir nur mit der einer globalen Variable df und einer eingeschobenen Funktion helfen, auf die letztendlich der zweite Button zugreift:
Code: Alles auswählen
def openfile():
return df
Ich bin eher für eine kurz "schmutzige" Lösung zu haben. Sicherlich wäre eine Lösung Klassen zu nutzen, aber da bin ich noch nicht so firm.
Ich hoffe, die Skriptausschnitte verdeutlichen das Problem und ermöglichen einen Ratschlag.
Vielen Dank im Voraus!