python - 尝试使用 tKinter 制作 GUI 时获取 "ValueError: invalid literal for int"

标签 python tkinter

我已经在这方面做了很多工作,但我尝试的一切似乎都无法解决问题。我对这种编程语言的细微差别相对缺乏经验。我很感激任何提示。

from tkinter import *

    root = Tk()

    lbltitle = Label(root, text="Adding Program")
    lbltitle.grid(row=0, column=3)

lbllabelinput = Label(root, text="Input first number")
lbllabelinput.grid(row=1, column=0)

entnum1 = Entry(root, text=1)
entnum1.grid(row=1, column=1)

lbllabelinput2 = Label(root, text="Input Second number")
lbllabelinput2.grid(row=1, column=2)

entnum2 = Entry(root, text=1)
entnum2.grid(row=1, column=3)


def callback():
    ent1 = entnum1.get()
    ent2 = entnum2.get()
    if ent1 != 0 and ent2 != 0:
                result = int(ent1) + int(ent2)
                lblresult = Label(root, text=str(result))
                lblresult.grid(row=3)

btnadd = Button(root, text="add", command=callback())
btnadd.grid(row=2)

root = mainloop()

这里是回溯

Traceback (most recent call last):
  File "/Users/matt9878/Google Drive/AddingProgram/AddingProgram.py", line 31, in <module>
    btnadd = Button(root, text="add", command=callback())
  File "/Users/matt9878/Google Drive/AddingProgram/AddingProgram.py", line 27, in callback
    result = int(ent1) + int(ent2)
ValueError: invalid literal for int() with base 10: ''

最佳答案

btnadd = Button(root, text="add", command=callback())

callback 此处不应包含括号。这使得该函数立即执行,而不是等待按下按钮。

btnadd = Button(root, text="add", command=callback)
<小时/>

此外,if ent1 != 0 and ent2 != 0 的计算结果始终为 True,因为 ent1ent2 始终是字符串,并且字符串永远不等于零。也许您的意思是 if ent1 != '' and ent2 != '':,或者只是 if ent1 and ent2:

<小时/>

此外,您应该从 Entry 对象中删除 text 属性。我不知道他们应该做什么,因为我没有在文档中看到它,但看起来只要它们都等于一,输入一个条目就会导致出现相同的文本在另一个条目中。

<小时/>

关于python - 尝试使用 tKinter 制作 GUI 时获取 "ValueError: invalid literal for int",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569680/

相关文章:

python - `my_instance = MyClass(a, b).my_method(c)` 是可接受的(Pythonic)模式吗?

Python ttk.combobox 强制发布/打开

python - AxesSubplot 对象的 xticks 等效函数

python - 在 Tkinter 中使用 askdirectory() 选择文件夹时显示所有文件

python - Tkinter:如何使字符出现在文本小部件上有时间延迟?

python - 在 Python 3.5 中同时从不同的 Tkinter Listbox 小部件中选择值

python - 在 matplotlib 中绘制值与字符串的关系?

python - 为什么 Pandas MultiIndex 切片在选择第一个索引级别的所有值时需要列占位符?

python - 如何有效打开30gb文件并对其进行处理而又不减慢速度?

python - 根据行提取具有不同索引列的 pandas 数据框的值