【问题标题】:How to fix value error : invalid literal for int() with base 10如何修复值错误:int() 以 10 为底的无效文字
【发布时间】:2020-07-15 09:10:04
【问题描述】:

显示错误:

value error : invalid literal for int() with base 10 

这段代码是一个gui计算器,我没有等号所以我不知道错误来自哪里(当我打开它时它没有显示gui)。

我在 YouTube 上学习 tkinter 教程,在教程中他制作了一个仅添加按钮的 gui 计算器,所以我决定添加所有符号,所以到此结束寻求帮助

from tkinter import *
root = Tk()
e = Entry(root , width=35)
e.grid(row=0 , column=0 , columnspan= 3, padx = 10 , pady = 10)


def button_add(number):
    current = e.get()
    e.delete(0 , END)
    e.insert(0, str(current) + str(number))

first_number = e.get()

int(first_number)

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

def adding_button():
    e.delete(0, END)
    sec_num = e.get()
    int(sec_num)
    e.delete(0 , END)
    e.insert(first_number  + sec_num)


def substract():
    e.delete(0 , END)
    first_num_sub = e.get()
    int(first_num_sub)
    e.delete(0, END)
    e.insert(first_number - first_num_sub)

def dividing():
    e.delete(0, END)
    div_num = e.get()
    int(div_num)
    e.delete(0, END)
    e.insert(first_number / div_num)

def multiply():
    mult_num = e.get()
    int(mult_num)
    e.delete(0, END)
    e.insert(first_number * mult_num)

button1 = Button(root, text='1', padx=40 , pady=20,command= lambda    :button_add(1)).grid(row=1 ,column=0)
button2 = Button(root, text='2', padx=40 , pady=20,command= lambda :button_add(2)).grid(row=1 ,column=1)
button3 = Button(root, text='3', padx=40 , pady=20,command= lambda :button_add(3)).grid(row=1 ,column=2)
button4 = Button(root, text='4', padx=40 , pady=20,command= lambda :button_add(4)).grid(row=2 ,column=0)
button5 = Button(root, text='5', padx=40 , pady=20,command= lambda :button_add(5)).grid(row=2 ,column=1)
button6 = Button(root, text='6', padx=40 , pady=20,command= lambda :button_add(6)).grid(row=2 ,column=2)
button7 = Button(root, text='7', padx=40 , pady=20,command= lambda :button_add(7)).grid(row=3 ,column=0)
button8 = Button(root, text='8', padx=40 , pady=20,command= lambda :button_add(8)).grid(row=3 ,column=1)
button9 = Button(root, text='9', padx=40 , pady=20,command= lambda :button_add(9)).grid(row=3 ,column=2)
button0 = Button(root, text='0', padx=40 , pady=20,command= lambda :button_add(0)).grid(row=4 ,column=0)
clear_button = Button(root, text='clear', padx=80 , pady=20, command=lambda : button_clear()).grid(row=4 , column=1, columnspan=2)
add_button = Button(root, text= '+', padx=40 , pady=20, command=adding_button).grid(row=5 ,column=0)
sub_button= Button(root, text='-', padx=40 , pady= 20,command=substract).grid(row=6, column=0)
div_button = Button(root, text='/', padx=40 , pady=20, command=dividing).grid(row=6, column=1)
mult_button = Button(root, text='*', padx=40, pady=20, command=multiply).grid(row=6, column=3)

root.mainloop()

【问题讨论】:

  • 在哪里报告此错误发生,您提供了哪些输入来生成错误?
  • 向我们展示完整的错误回溯!
  • 一次写更少的代码。首先让每个单独的部分工作。

标签: python user-interface calculator


【解决方案1】:
e.delete(0, END)
sec_num = e.get()
int(sec_num)

如果你从e文本条目中删除文本,那么你当然将get一个空字符串转换成sec_num,并且一个空字符串不能转换为整数。

同样,

first_number = e.get()

int(first_number)

您尝试在任何功能之外执行此操作,而 UI 仍在设置中;这是在用户有机会输入first_number 之前,所以当然没有可用于转换为整数的文本。

还请注意,简单地写 int(sec_num) 本身没有任何用处;特别是,它不会导致sec_num 变为整数。它只计算整数值;你仍然需要对结果做一些事情。就像value + 1不会改变value一样。

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 2019-04-03
    • 2023-04-03
    • 2021-01-28
    • 2012-05-14
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多