【问题标题】:python tkinter ValueError: invalid literal for int() with base 10: ''python tkinter ValueError:int()的无效文字,基数为10:''
【发布时间】:2021-12-19 16:33:15
【问题描述】:

我正在用 Python 制作一个计算器程序。 我想输出使用 tkinter 输入的数字的总和。

enter code here
def plus():
    e1.delete(0, END)
    e2.delete(0, END)
    e3.delete(0, END)
    x = int(e1.get()) #Inputed value.
    y = int(e2.get()) #Inputed value.
    return e3.insert(0, x+y)

e1 = Entry(window)
e2 = Entry(window)
e3 = Entry(window)

【问题讨论】:

  • 用您自己的话说,如果您从e1 条目中删除所有文本,然后尝试将那里的文本转换为整数,您认为应该得到什么整数结果?为什么?用您自己的话来说,如果您想从条目中删除文本,并将 当前存在的文本 转换为整数,那么这两件事中的哪一个应该首先发生?为什么?
  • 欢迎回到 Stack Overflow。作为复习,请阅读 How to Askericlippert.com/2014/03/05/how-to-debug-small-programs,并记住 Stack Overflow should be treated as a last resort, after your best attempt to solve the problem yourself。如果您遇到困难,并且已尽可能缩小范围,您至少应该确保提出一个实际问题,同时解释您的尝试。
  • 我一点也不咄咄逼人。遵循苏格拉底方法,我将您的注意力集中在您需要考虑的代码方面。我还将通知您有关 Stack Overflow 的政策。
  • 为什么e3Entry?从给定的代码来看,它似乎永远不会被用户使用,这意味着它可以只是一个只读小部件,例如Label

标签: python tkinter


【解决方案1】:

你为什么在get()之前这样做?

e1.delete(0, END)
e2.delete(0, END)

它们在e1.get()e2.get() 之前运行,因此当您运行e1.get() 时,它将返回""。然后你应该像这样交换他们的顺序:

def plus():
    e3.delete(0, END)
    x = int(e1.get())
    y = int(e2.get())
    e1.delete(0, END)
    e2.delete(0, END)
    return e3.insert(0, x+y)

e1 = Entry(window)
e2 = Entry(window)
e3 = Entry(window)

这是我的回答,谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2021-08-06
    • 2018-09-05
    • 2021-12-18
    相关资源
    最近更新 更多