Как получить значение функции, вызываемой через tkinter.Button и записать ее в новую переменную? (Python)

Есть кнопка "загрузить токены",

load_tokens_btn = tk.Button(text="Загрузить файл с txt токенами", command=open_tokens)

при нажатии на которую вызывается функция open_tokens()

def open_tokens():
    op = fd.askopenfilename()
    file = fileinput.input(op)
    tokens = [x for x in file]
    return tokens

и появляется диалоговое окно для открытия файла.диалоговое окно

юзер выбирает txt файл, этот txt файл читается и записывается в список tokens внутри функции open_tokens(). Сам вопрос - как "достать" этот список tokens из функции open_tokens() и засунуть этот список tokens в "глобальный код"? Потому что мне нужно в дальнейшем работать со списком tokens.

return tokens не работает, да и возвращать ему значение некуда.


Ответы (2 шт):

Автор решения: DGDays

Есть 2 пути

  1. Создать класс, в него запихнуть само окно и функцию открытия окна. Далее через self.tokens сделать переменную для чтения её из класса и можно дальше, внутри класса или извне обращаться к ней также(извне self меняем на переменную, которая является экземпляром класса)
  2. Просто создать tokens как глобальную переменную
→ Ссылка
Автор решения: Cmer4

Создать массив вне функции (после импорта), и в функции просто изменять эту переменную:

tokens = []
# остальной код
def open_tokens():
    global tokens # чтобы не создать новую локальную переменную в следующей строчке
    tokens = [x for x in file]
→ Ссылка