NameError, имя не определено - PullRequest
       0

NameError, имя не определено

0 голосов
/ 27 февраля 2020

Я определил Entry в def, а затем использую его в простой математической функции. Когда я набираю число в Entry, он говорит, что имя (из Entry) не определено.

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

marka1=float(marka.get())*1*3.79
NameError: name 'marka' is not defined

Код:

from  tkinter import*

prozor1=Tk()
prozor1.title('Python')
prozor1.geometry('500x500')
prozor1.config(bg= 'yellow')
natpis1=Label(prozor1, text='Konverter valuta')
natpis1.place(x=200, y=50)
natpis1.config(font=36)
natpis1.config(bg='silver')
natpis1.config(fg='black')
suma1=Entry(prozor1, width=19)
suma1.place(x=200,y=100)
mb=Menubutton(prozor1, text='Valuta')
mb.place(x=27, y=100)
mb.menu=Menu(mb)
mb.config(bg='grey')
mb['menu']=mb.menu

def km1():
    marka1=float(marka.get())*1*3.79
    rezu3=Label(prozor1, text='KN='+str(marka1))
    rezu3.place(x=200, y=170)
    rezu3.config(bg='silver')
def KM1():
    frk=Button(prozor1, text='Pretvori',width=15, command=km1)
    frk.place(x=200,y=130)
    frk.config(bg='silver')
    natpis1=Label(prozor1, text='Unesi sumu u KM')
    natpis1.place(x=90, y=100)
    natpis1.config(bg='silver')
    marka=Entry(prozor1, width=19)
    marka.place(x=200,y=100)

mb.menu.add_command(label='KM-KN', command=KM1)

Это важная часть проекта.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

В вашем случае marka необходимо передать в функцию. Для этого вам нужно будет создать переменную ранее в вашем коде. Вот что работает для меня:

def km1(marka):
    marka1=float(marka.get())*1*3.79
    rezu3=Label(prozor1, text='KN='+str(marka1))
    rezu3.place(x=200, y=170)
    rezu3.config(bg='silver')
def KM1():
    marka=Entry(prozor1, width=19)
    marka.place(x=200,y=100)
    frk=Button(prozor1, text='Pretvori',width=15, command=lambda: km1(marka))
    frk.place(x=200,y=130)
    frk.config(bg='silver')
    natpis1=Label(prozor1, text='Unesi sumu u KM')
    natpis1.place(x=90, y=100)
    natpis1.config(bg='silver')

(Кроме того, это создает еще одну проблему с проверками формы, это может помочь )

0 голосов
/ 27 февраля 2020

В python есть нечто, называемое локальной и глобальной переменными. Вы определяете marka внутри функции, поэтому остальная часть кода не может ее увидеть. В начале вашего def KM1 вам нужно вставить строку, подобную этой:

def KM1:
    global marka
    […]

, чтобы переменная стала глобальной, и весь код мог видеть ее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...