@1AhSaS1

Программа выдает ошибку,так как не может определить значение переменной,которую я ввожу с помощью виджета Entry,с использованием tkinter, где ошибка?

Привет, я еще плохо разбираюсь в питоне, поэтому пожалуйста помогите определить где ошибка.
Я хотела, чтобы в виджет Entry можно было ввести значение радиуса, который затем становился бы числовой переменной и при умножении на число Пи, в консоли выводилось значение окружности. В коде я использую tkinter. Но когда я запускаю программу выдает :
r = int(radius.get())
NameError: name 'radius' is not defined

Вот код (первой идет функция def kr_click():):
def radius_click():
    r = int(radius.get())
    okr = r*3.14
    print(okr)

def kr_click():
    frame_kr = Frame(root, bg='#060922')
    frame_kr.place(relx=0.68, rely=0, relwidth=0.32, relheight=1)
    radius = Entry(frame_kr, bg='white', font=40)
    radius.place(relx=0.1, rely=0.30)
    kradius = Button(frame_kr, text='Help', bg='yellow', command=radius_click)
    kradius.place(relx=0.5, rely=0.45)


(Никогда раньше не задавала вопросы, напишите если не хватает данных)
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Переменная radius существует в пространстве имён функции kr_click, а в radius_click её нет. Нужно передать:
def radius_click(radius):
    ...

kradius = Button(frame_kr, text='Help', bg='yellow', command=lambda: radius_click(radius))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
1.Нужно указывать весь код а ни его часть где произошла ошибка! а лучше и код и часть где есть ошибка.
2.Посмотри видео ютубе о областях видимости в python.
3.Ошибка произошла потому что переменная radius является локальной и используется только в этой функции.
я исправил ошибку указав что переменная radius является глобальной
Вот сам код
from tkinter import*

root = Tk()
root.title("какое-то ")
root.geometry("450x450")

def radius_click():
    r = int(radius.get())
    okr = r*3.14
    print(okr)

def kr_click():
    global radius
    frame_kr = Frame(root, bg='#060922')
    frame_kr.place(relx=0.68, rely=0, relwidth=0.32, relheight=1)
    radius = Entry(frame_kr, bg='white', font=40)
    radius.place(relx=0.1, rely=0.30)
    kradius = Button(frame_kr, text='Help', bg='yellow', command=radius_click)
    kradius.place(relx=0.5, rely=0.45)

kr_click()

5.Если это помогло отметь комментарий решением.
6.гугл в помощь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы