2016-09-17 2 views
-1

Так вот как моя программа протекает. Пользователь загружает файл, через меню и вызывается функция loadFile.Получить возвращаемые значения из меню tkinter python

Figure 1

def loadFile(): 
    dictList = defaultdict(list) 
    filename = askopenfilename(filetypes=[("text files","*.txt")]) 
    #process the file content and store in dictList 
    return dictList 

Теперь в графическом интерфейсе пользователя, когда пользователь нажимает на файловом меню загрузки, загрузка файла будет вызван. Поскольку loadfile возвращает мне объект dictList, который мне нужен для дальнейшей обработки позже. Как получить возвращаемый объект без использования глобальных переменных? Я тоже не кодирую объектно-ориентированным способом.

fileMenu.add_command(label="Load File", command=loadFile) 
+0

Любовь, когда люди игнорируют и глобальные переменные, и ООП! –

+0

В принципе, я хочу сохранить dictList, который возвращает loadfile(). Как сохранить это? loadFile() будет вызываться, когда пользователь нажимает «загрузить файл» в меню. – ysj

ответ

1

Вы не можете сделать это, не используя глобальную переменную. Переменная должна храниться таким образом, чтобы к ней можно было обращаться из нескольких функций. Поскольку вы не используете объекты, ваш единственный должен использовать глобальную переменную.

технически говоря, это не ваш только выбор. Вы можете использовать какую-либо базу данных или записать значение на диск, но это единственный практический выбор в этом сценарии.

+0

Это довольно плохое ограничение. Что делать, если у меня есть функции для вызова, которые требуют аргументов? ООП решает это? – ysj

+0

@ysj: это не ограничение, это просто то, как работает программирование. Чтобы функция использовала значение, определенное в другой функции, оно должно быть передано или должно быть в каком-то общем контексте. Поскольку вы спрашиваете о функции, вызванной в ответ на событие (по сравнению с вызовом непосредственно), вы _must_ храните его так, чтобы другие функции могли получить к нему доступ. Это несколько неизменный факт о программировании, что вы не можете использовать значение, если его не видите. –

Смежные вопросы