Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2022 12:47:26

AndreyRafaev
Зарегистрирован: 2022-04-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать значения переменных созданных в Tkinder

Добрый день.
Не могу передать значения имени файла после его получения в 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]#Выдает ошибку

Офлайн

#2 Апрель 19, 2022 22:30:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Как передать значения переменных созданных в Tkinder

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

Глобальных переменных в коде вообще быть не должно. Если они появляются (необходимость в них возникает), значит ты что-то делаешь неправильно.

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

Начни с нуля, убери функции и делай всё сплошняком.

AndreyRafaev
  
print(file)#Выдает ошибку
Да это имя file является локальным внутри функции. Оно внутри функции создаётся и внутри функции уничтожается. А ты его пытаешься использовать снаружи функции, где этого имени уже не существует давно. Вот и все твои познания.



Отредактировано py.user.next (Апрель 19, 2022 22:33:04)

Офлайн

#3 Апрель 20, 2022 11:27:15

AndreyRafaev
Зарегистрирован: 2022-04-19
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как передать значения переменных созданных в Tkinder

Спасибо, знаток!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version