Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Я не могу понять в чём дело, помогите разобраться. Я создаю файловый проводник для открытия файлов на Tkinter и использую Python 2.

В библиотеке Tkinter есть функция askopenfilename, которая позволяет записывать путь к файлу в переменную, но я хочу, чтобы переменная, в которой хранится путь к файлу, была внутри функции get_file_path_1. Вопрос: как мне получить доступ к переменной file_path_1 вне функции, при этом не вызываю саму функцию, чтобы инициализировать переменную file_path_1. Мне не нужно вызывать лишний раз функцию get_file_path_1 , так как она вызывается только при нажатии кнопки открыть...

Вот мой код:

https://interview.cups.online/live-coding/?room=7e569311-ba33-4219-bb78-09437c780960

Написание кодаTkinter+1
Ассасин Шак
  ·   · 477
Первый
Python-энтузиаст  · 3 июн 2021

В вашем примере, переменная file_path_1 инициализируется в момент нажатия на кнопку, а не после tk.mainloop(). После клика на кнопку и выбора пути до файла, с этой переменной можно работать до закрытия окна (т.о. путь к файлу будет получен до закрытия окна).

Другое дело, что при обращении к переменной file_path_1 до клика на кнопку будет вылетать ошибка, т.к. эта переменная закрыта в функции и программа её не видит, если функция не вызывалась. Чтобы этого избежать, нужно вынести global file_path_1 из функции:

global file_path_1 = ""
def get_file_path_1():
     global file_path_1
     ....

Таким образом, global file_path_1 изначально будет условно пустым, а при нажатии на кнопку в эту переменную будет записываться путь до файла.

Можно добавить какую-то работу в функцию def get_file_path_1. При клике на кнопку будет выбираться путь до файла и выполняться с ним работа.

Но когда я пытаюсь распечатать переменную, мне выводится пустота вместо пути к файлу.