Форум сайта python.su
Добрый день.
Не могу передать значения имени файла после его получения в askopenfile в основную проограмму - print(file) показывает ошибку.
Спасибо.
from tkinter import * from tkinter.filedialog import askopenfile from tkinter import filedialog global file root = Tk() root.geometry('400x60') root.title("Подсчет очков на Russialoppet") def open_file_handler(): global global_file global_file = open_file() def open_file(): file = askopenfile (mode ='r', filetypes =[('Текстовый файл', '*.txt'), ('Excel файл', '*.xlsx *.xls')]) if file is not None: file = file.name root.destroy() root.update() return file btn = Button(root, text ='Выберите текстовый файл или Excel файл', command = lambda:open_file_handler()) btn.pack(side = TOP, pady = 10) print (global_file) mainloop() [b]print(file)[/b]#Выдает ошибку
Офлайн
У тебя неправильно используют области видимости имён. Ты должен был прочитать книжку по питону, прежде чем браться за разработку на питоне. Тупая ошибка из-за нулевых знаний в самом питоне и его областях видимости.
Глобальных переменных в коде вообще быть не должно. Если они появляются (необходимость в них возникает), значит ты что-то делаешь неправильно.
Я так понимаю, что ты не только в питоне ничего не знаешь, но и в структурном программировании. Поэтому-то ты и не знаешь, как правильно данные передавать между функциями.
Начни с нуля, убери функции и делай всё сплошняком.
AndreyRafaevДа это имя file является локальным внутри функции. Оно внутри функции создаётся и внутри функции уничтожается. А ты его пытаешься использовать снаружи функции, где этого имени уже не существует давно. Вот и все твои познания.print(file)#Выдает ошибку
Отредактировано py.user.next (Апрель 19, 2022 22:33:04)
Офлайн
Спасибо, знаток!
Офлайн