首页 > 解决方案 > 有没有办法使用工作表菜单自动更新列菜单?

问题描述

我正在开发一个应用程序,用户可以在其中上传他的 excel 文件并获取表格和列。如何使用表格下拉菜单(第一个)更新列下拉菜单(第二个)。

我已经尝试创建一个函数“更新”,从函数“GetSheet”获取新工作表并更新它。但它不起作用,因为列下拉菜单总是卡在默认表中。

master.title('ATT Analytics App')
master.geometry("400x250")

Myfile= filedialog.askopenfile()
wb = load_workbook(filename = str(Myfile.name))
#Sheets = wb.sheetnames


variable = StringVar(master)
variable.set(str(wb.sheetnames[2])) # default value
w = OptionMenu(master, variable, str(wb.sheetnames[0]), str(wb.sheetnames[1]), str(wb.sheetnames[2]), str(wb.sheetnames[3]))
w.pack()



def GetSheet():
    FileRead = pd.read_excel(str(Myfile.name),sheet_name= str(variable.get())) 
    MyHeadres = list(FileRead.columns.values)
    return MyHeadres, FileRead

variable1 = StringVar(master)

def Update(TheHeaders):
    variable1.set(str(TheHeaders[0]))
    wc = OptionMenu(master, variable1, str(TheHeaders[0]), str(TheHeaders[1]), str(TheHeaders[2]), str(TheHeaders[3]), str(TheHeaders[4]), str(TheHeaders[5]))
    return wc

def RunAll():
    GetMySheet, FileRead = GetSheet()
    UpdateMysheet = Update(GetMySheet)
    return UpdateMysheet, variable1.get(), FileRead 

button = Button(master, text="Run", command=RunAll)
button.pack(side = TOP)

UpdateMysheet, MyColumn, ReadMyFile = RunAll()
UpdateMysheet.pack()
FileRead = ReadMyFile

mainloop()

我想让我的代码能够使用下拉菜单(变量)更新列下拉菜单(变量1),它工作正常,还可以存储您想要的列并继续选择另一个列等等上.. 非常感谢您的帮助。

编辑:现在当我选择另一个工作表时,列的默认值会更新到新工作表,但是当我查看完整列表时,我发现这些值来自旧工作表。

标签: pythontkinter

解决方案


推荐阅读