Python 如何链接选项菜单';从EXCEL文件读取后发生了什么?
我是Python新手,我正在尝试构建一个可以打开en-readexcel文件的GUI。我已经有了单选按钮,每个链接都指向不同的文件夹。在此文件夹中,可以选择多个文件。然后出现两个选项菜单,一个用于读取excel的工作表,另一个用于读取excel的列。这就是我被卡住的地方。我似乎无法将这两个选项菜单相互链接。这是我目前的代码:Python 如何链接选项菜单';从EXCEL文件读取后发生了什么?,python,tkinter,Python,Tkinter,我是Python新手,我正在尝试构建一个可以打开en-readexcel文件的GUI。我已经有了单选按钮,每个链接都指向不同的文件夹。在此文件夹中,可以选择多个文件。然后出现两个选项菜单,一个用于读取excel的工作表,另一个用于读取excel的列。这就是我被卡住的地方。我似乎无法将这两个选项菜单相互链接。这是我目前的代码: import tkinter from tkinter import filedialog global data, sheets, sheetsList class f
import tkinter
from tkinter import filedialog
global data, sheets, sheetsList
class filedialogexample(tkinter.Frame):
def __init__(self, root):
tkinter.Frame.__init__(self, root)
self.favorite = tkinter.StringVar()
tkinter.Radiobutton(self, text = "Browse 1", variable = self.favorite,
command=self.askopenfilename, value="C:\\Users\\Documents\\Python Scripts"
).grid(row=0, column=0, columnspan=2, sticky='w')
def askopenfilename(self):
self.variable = tkinter.StringVar()
self.variable.set("Sensors")
self.variable2 = tkinter.StringVar()
self.variable2.set("Signals")
filenames = filedialog.askopenfilenames(initialdir=self.favorite.get())
if filenames:
root.tk.splitlist(filenames)
for file in filenames:
data = pd.ExcelFile(file)
sheets = pd.read_excel(file)
sheetsList = {data:[sheets]}
tab=tkinter.OptionMenu(self, self.variable,
*data.sheet_names, command = self._selectSignal
).grid(row=0, column=2, columnspan=2)
column=tkinter.OptionMenu(self, self.variable2,
*list(sheets)
).grid(row=1, column=2, columnspan=2)
def _selectSignal(self, choice):
columns = sheetsList[self.variable.get()]
column.setitems(columns)
if __name__=='__main__':
root = tkinter.Tk()
filedialogexample(root).grid()
root.mainloop()
我得到的错误是:
NameError: name 'sheetsList' is not defined
但是如果我将_selectSignal与if filename放在同一行中,则会出现错误:
AttributeError: 'filedialogexample' object has no attribute '_selectSignal'
我不知道怎么解决这个问题。提前感谢您的帮助 将
global
语句移动到每个方法将(可能)解决问题
p、 你可能对全球声明有一些误解。这是问题的答案。你能回答这个问题吗?@xmcp,我重写了这个问题,使它更简短、更清晰。有点乱谢谢,这很有帮助!