私はPythonを初めて使い、Excelファイルを開くことができるGUIを構築しようとしています。私は既にそれぞれ異なるフォルダにリンクしているラジオボタンを持っています。このフォルダでは、複数のファイルを選択できます。次に、2つのOptionMenuが表示されます.1つはExcelのシートを読み、もう1つはExcelの列を読み込みます。これは私が立ち往生する場所です。私はこれらの2つのOptionMenuを互いにリンクさせることはできません。これは、これまでの私のコードです:私はExcludeから読み込んだOptionMenuをどのようにリンクできますか?
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を入れた場合、ファイル名かのように、私はエラーを取得:
をAttributeError: 'filedialogexample' object has no attribute '_selectSignal'
これを解決する方法がわかりません。助けをあらかじめありがとう!
この質問は[最小限の完全かつ検証可能な例を作成する](http://stackoverflow.com/help/mcve)できますか? – xmcp
@ xmcp、私はそれを短く、より明確にするために質問を書きました。それは混乱のビットだった – Cucumber12