Hello together,
in the following code I want to start to create a tkinter window and open an Excel file, choose the sheet from a tkinter Dropdown and after pressing a Close button I want to Progress with the sheetname and the filename to create a dataframe and going for plots. However, I get enought code to create my tkinter GUI and choose the sheet, but I cant Transfer this sheetname out of the tkinter setup. I post a solution with class, but I am not sure, if ist necessary. Furthermore I am struggeling with the self command. I every case, the main Problem is usual the Output
TypeError: __init__() missing 1 required positional argument: 'master'
and I don't know how to handle this. How can I extract the tkvar right, is the self. command used right and do I have to make a class to work with tkinter as sheet selector. .... I am pretty new in Python and mainly used numpy and matplotlib at the beginning
in the following code I want to start to create a tkinter window and open an Excel file, choose the sheet from a tkinter Dropdown and after pressing a Close button I want to Progress with the sheetname and the filename to create a dataframe and going for plots. However, I get enought code to create my tkinter GUI and choose the sheet, but I cant Transfer this sheetname out of the tkinter setup. I post a solution with class, but I am not sure, if ist necessary. Furthermore I am struggeling with the self command. I every case, the main Problem is usual the Output
TypeError: __init__() missing 1 required positional argument: 'master'
and I don't know how to handle this. How can I extract the tkvar right, is the self. command used right and do I have to make a class to work with tkinter as sheet selector. .... I am pretty new in Python and mainly used numpy and matplotlib at the beginning
from tkinter.filedialog import askopenfilename
import tkinter
import pandas as pd
import matplotlib.pyplot as plt
class App:
def __init__(self,master):
self.master = master
Filename = askopenfilename(filetypes = (("ExcelFiles","*.xlsm *.xlsx *.xls"),("all files","*.*")),title='Jetzt wähl endlich die Kagg-Datei')
print(Filename)
self.xl = pd.ExcelFile(Filename)
print(self.xl.sheet_names)
print(self.xl.sheet_names[0])
# Add a grid
self.mainframe = tkinter.Frame(self.master)
self.mainframe.grid(column=0,row=0, sticky=(tkinter.N,tkinter.W,tkinter.E,tkinter.S) )
self.mainframe.columnconfigure(0, weight = 2)
self.mainframe.rowconfigure(0, weight = 2)
self.mainframe.pack(pady = 100, padx = 100)
self.button = tkinter.Button(self.mainframe,
text="Auswahl", fg="red",
command = master.destroy)
# Create a Tkinter variable
self.tkvar = tkinter.StringVar(self.master)
#Convert xl_SheetNameList into Dictionary
self.dictOfxl = dict.fromkeys(self.xl.sheet_names , 1)
# Dictionary with options
choices = self.dictOfxl
self.tkvar.set(self.xl.sheet_names[0]) # set first xl_Sheet as default option
self.popupMenu = tkinter.OptionMenu(self.mainframe, self.tkvar, *choices)
tkinter.Label(self.mainframe, text="Choose a sheet").grid(row = 1, column = 1)
self.popupMenu.grid(row = 2, column =1)
self.button.grid(row = 3, column = 1)
# on change dropdown value
def change_dropdown(*args):
print(self.tkvar.get() )
# link function to change dropdown
self.tkvar.trace('w', change_dropdown)
master = tkinter.Tk()
master.title("Sheetauswahl")
app = App(master)
master.mainloop()
print(App().tkvar.get())
sheet = App().tkvar.get()
df = pd.read_excel(Filename, sheet_name=sheet)
print(df)Best greetings
