python - TypeError:必须是实数,不是Entry
问题描述
我正在创建一个代码来创建一个计算器,但我不断收到这个错误:
Traceback (most recent call last):
File "C:\Users\Monish Shah\AppData\Local\Programs\Python\Python36-
32\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:\Users\Monish Shah\AppData\Local\Programs\Python\Python36-
32\monish-play\calc-completed-copy-for-editing-copy2.py", line 40, in click
Label (window, text = str(sqrt(n_textentry)), bg = "white") .grid(row = 13,
column = 0, sticky = N)
TypeError: must be real number, not Entry
有谁知道为什么我的代码不起作用?我真的不明白为什么它不能和条目,因为我正在收集用户的输入?我正在研究,但我无法弄清楚如何将用户的输入正确地合并到代码中。
这是我使用的代码:
from math import sqrt
from tkinter import *
window = Tk()
window.title("Welcome to Calculator ")
window.configure(background = "white")
Label (window, text = "Calculator", bg = "white") .grid(row = 0, column = 0,
sticky = N)
#to create the box for the first number and store it
Label (window, text = "Enter the first number", bg = "white") .grid(row = 1,
column = 0, sticky = N)
n_textentry = Entry(window, width = 10, bg = "white")
n_textentry.grid(row = 2, column = 0, sticky = N)
#to create the box for the second number
Label (window, text = "Enter the second number", bg = "white") .grid(row = 5,
column = 0, sticky = N)
m_textentry = Entry(window, width = 10, bg = "white")
m_textentry.grid(row = 6, column = 0, sticky = N)
#click function
def click():
n_textentry.get()
m_textentry.get()
operation_textentry.get()
if operation_textentry == 1:
result1 = Label (window, text = str(n_textentry + m_textentry), bg =
"white") .grid(row = 13, column = 0, sticky = N)
elif operation_textentry == 2:
Label (window, text = str(n_textentry - m_textentry), bg = "white")
.grid(row = 13, column = 0, sticky = N)
elif operation_textentry == 3:
Label (window, text = str(n_textentry * m_textentry), bg = "white")
.grid(row = 13, column = 0, sticky = N)
elif operation_textentry == 4:
Label (window, text = str(n_textentry / m_textentry), bg = "white")
.grid(row = 13, column = 0, sticky = N)
elif operation_textentry == 5:
Label (window, text = str(n_textentry ** m_textentry), bg = "white")
.grid(row = 13, column = 0, sticky = N)
else:
Label (window, text = str(sqrt(n_textentry)), bg = "white")
.grid(row = 13, column = 0, sticky = N)
# operation_textentry == 6:
# Label (window, text = str(sqrt(n_textentry)), bg = "white")
.grid(row = 13, column = 0, sticky = N)
#else:
# print("Invalid Operation ")
#to show list of options
Label (window, text = '''
Enter 1 for addition
Enter 2 for subtraction
Enter 3 for multiplication
Enter 4 for division
Enter 5 for exponentiation
Enter 6 for square root *This will only work for 1st choice*''', bg =
"white") .grid(row = 9, column = 0, sticky = W)
operation_textentry = Entry(window, width = 10, bg = "white")
operation_textentry.grid(row = 10, column = 0, sticky = N)
Button(window, text = "Submit", width = 6, command=click) .grid(row = 11,
column = 0, sticky = N)
解决方案
尝试将用户输入转换为float
or int
。您似乎正在尝试对用户输入(Entry
对象)应用数学运算,但对象不支持数学运算Entry
。
推荐阅读
- java - 为什么这个简单的代码会抛出 ArrayIndexOutOfBoundsException?
- docker - 无法将 docker 镜像推送到 gcr.io
- java - 我们可以在 App 模块中使用库模块的资源吗?
- android - 使用 Mp 图表为组条中的每个单独条设置名称
- spacy - 在 spacy 实体链接中显示来自 kb id 的实体描述
- r - 如何在 Mac 上增加 R 的内存限制?
- python - 在递归下传递Python函数内部变量的值
- python - TypeError:传递 PeriodDtype 数据无效。改用`data.to_timestamp()`
- scala - 如何使用主类选择对话框?
- google-apps-script - 从不是由 Google Apps 脚本创建的文件中获取元数据