微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NameError:tkinter 中未定义名称“second_number”

如何解决NameError:tkinter 中未定义名称“second_number”

我正在开发一个计算器 GUI。我已经完成了 GUI 本身的工作,现在我正在使 calc 执行操作。它应该执行加法、减法、乘法和除法以及平方。但是我不断收到这个错误,这让我很烦恼。

Traceback (most recent call last):
File "C:\Users\Admin\python3.9\lib\tkinter\__init__.py",line 1892,in __call__
return self.func(*args)
File "C:\Users\Admin\PycharmProjects\pythonProject\Calculator GUI v1.0.py",line 57,in 
button_equal
e.insert(0,f_num) + int(second_number)
NameError: name 'second_number' is not defined

Process finished with exit code 0

我的代码

import tkinter as Tk
from tkinter import *

root_var = Tk()
root_var.title("Calculator")

e = Entry(root_var,width=25,borderwidth=5)
e.grid(row=0,column=0,columnspan=3,padx=10,pady=10)

def button_click(number=None):

#e.delete(0,END)
current = e.get()
e.delete(0,END)
e.insert(0,str(current) + str(number) )

def button_clear():
e.delete(0,END)


def button_add():
first_number = e.get()
global f_num
f_num = int(first_number)
e.delete(0,END)


def button_subtract():
second_number = e.get()
e.delete(0,f_num + int(second_number))


def button_multiply():
third_number = e.get()
e.delete(0,f_num + int(third_number))



def button_divide():
fourth_number = e.get()
e.delete(0,f_num + int(fourth_number))



def button_exponents():
fifth_number = e.get()
e.delete(0,f_num + int(fifth_number))

def button_equal():
sixth_number = e.get()
e.delete(0,f_num) + int(second_number)

button_1 = Button(root_var,text="1",padx=50,pady=10,command=lambda: button_click(1))
button_2 = Button(root_var,text="2",command=lambda: button_click(2))
button_3 = Button(root_var,text="3",command=lambda: button_click(3))
button_4 = Button(root_var,text="4",command=lambda: button_click(4))
button_5 = Button(root_var,text="5",command=lambda: button_click(5))
button_6 = Button(root_var,text="6",command=lambda: button_click(6))
button_7 = Button(root_var,text="7",command=lambda: button_click(7))
button_8 = Button(root_var,text="8",command=lambda: button_click(8))
button_9 = Button(root_var,text="9",command=lambda: button_click(9))
button_0 = Button(root_var,text="0",command=lambda: button_click(0))

button_addition = Button(root_var,text="+",command=button_add)
button_subtraction = Button(root_var,text="-",command=button_subtract)
button_multiplication = Button(root_var,text="*",command=button_multiply)
button_division = Button(root_var,text="/",command=button_divide)
button_exponents = Button(root_var,text="^",command=button_exponents)

button_equals = Button(root_var,text="=",command=button_equal)

button_clear = Button(root_var,text="C",command=button_clear)

button_1.grid(row=3,column=2)
button_2.grid(row=3,column=1)
button_3.grid(row=3,column=0)

button_4.grid(row=2,column=2)
button_5.grid(row=2,column=1)
button_6.grid(row=2,column=0)

button_7.grid(row=1,column=2)
button_8.grid(row=1,column=1)
button_9.grid(row=1,column=0)

button_0.grid(row=4,column=0)
button_addition.grid(row=4,column=1)
button_subtraction.grid(row=4,column=2)

button_multiplication.grid(row=5,column=0)
button_division.grid(row=5,column=1)
button_exponents.grid(row=5,column=2)

button_equals.grid(row=6,column=0)
button_clear.grid(row=6,column=1)


 root_var.mainloop()

请帮帮我。谢谢!

解决方法

您使用的是 second_number 而不是 Six_number

def button_equal():  
    sixth_number = e.get()
    e.delete(0,END)
    e.insert(0,f_num) + int(sixth_number)

编辑:更改

e.insert(0,f_num) + int(sixth_number) 

e.insert(0,f_num + int(sixth_number))

第一种方法是对 e.insert() 的返回值和 Sixth_number 求和(因此,你会得到一个 TypeError,因为你试图对 None 和 Int 求和)。

第二种方法是将 f_num 加第六个数字相加,然后将结果插入到条目 «e» 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。