Может кто-нибудь помочь мне завершить этот код? Я пытаюсь передать результаты функции, в данном случае это вложенная функция с именем "processFile", в родительскую функцию в кадре tkinter. Я только недавно начал использовать классы, так что мне еще есть чему поучиться, и я уверен, что вы неизбежно отметите, что то, что я сделал до сих пор, не является лучшей практикой или эффективностью.
Я попытался сделать processFile обычной функцией в классе и вложенной функцией, как показано в коде ниже. Большинство ошибок, которые я получаю,
строка 24, в
button1 = Button (ouUpdate, text = 'Открыть файл', команда = lambda: processFile (self, filename))
NameError: имя 'filename' не определено
Я понимаю, почему, и я понимаю, что с помощью списка я должен сначала преобразовать полученную строку в список, но мне нужна помощь для выполнения этой работы.
ПРИМЕЧАНИЕ. В конечном итоге я напишу программу чтения csv в функцию processFile, чтобы прочитать результаты csv в список, но сейчас я просто пытаюсь начать.
from tkinter import *
from tkinter import filedialog
from tkinter.filedialog import askopenfilename
class GUI:
def mainPage(self):
home = Frame(root)
home.place(relwidth=1, relheigh=1)
label = Label(home, text='Cyber Database Console', bg='#ccffcc', font=('Arial', 18))
label.place(relx=0 , rely=0, relheigh=0.1, relwidth=1)
button1 = Button(home, text='OU Update', command=lambda: self.ouUpdate())
button1.place(relx=0.1, rely=0.2, relheigh=0.05, relwidth=0.2)
button2 = Button(home, text='VID Update', command=lambda: self.vIDUpdate())
button2.place(relx=0.1, rely=0.3, relheigh=0.05, relwidth=0.2)
def ouUpdate(self):
ouUpdate = Frame(root)
ouUpdate.place(relwidth=1, relheigh=1)
label = Label(ouUpdate, text='Database OU Update Console', bg='#ccffcc', font=('Arial', 18))
label.place(relx=0 , rely=0, relheigh=0.1, relwidth=1)
button1 = Button(ouUpdate, text='Back', command=lambda: self.mainPage())
button1.place(relx=0, rely=0.1, relheigh=0.05, relwidth=0.2)
button1 = Button(ouUpdate, text='Open File', command=lambda: processFile(self, filename))
button1.place(relx=0, rely=0.4, relheigh=0.05, relwidth=0.2)
listing = Listbox(ouUpdate)
listing.place(relx=0.1, rely=0.6, relheigh=0.1, relwidth=0.5)
def processFile(self, filename):
filename = askopenfilename()
return filename
def vIDUpdate(self):
vIDUpdate = Frame(root)
vIDUpdate.place(relwidth=1, relheigh=1)
label = Label(vIDUpdate, text='Database V-ID Console', bg='#ccffcc', font=('Arial', 18))
label.place(relx=0 , rely=0, relheigh=0.1, relwidth=1)
button1 = Button(vIDUpdate, text='Back', command=lambda: self.mainPage())
button1.place(relx=0, rely=0.1, relheigh=0.05, relwidth=0.2)
root = Tk()
canvas = Canvas(root, heigh=500, width=600)
canvas.pack()
begin = GUI()
begin.mainPage()
root.mainloop()