我在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)
这是项目的重要组成部分。
答案 0 :(得分:1)
在您的情况下,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')
(此外,这确实带来了表单验证this might help的另一个问题)
答案 1 :(得分:0)
在python中,有一些叫做local and global的变量。您在函数内定义marka
,因此其余代码看不到它。在def KM1
的开头,您需要插入如下一行:
def KM1:
global marka
[…]
使变量变为全局变量,整个代码都可以看到