我已经做了很多工作,而我尝试的一切似乎都无法解决问题。我对这种编程语言的细微之处相对缺乏经验。我感谢任何提示。
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
始终是字符串,并且字符串永远不等于零,因此ent1
总是要求值为ent2
。也许您是说if ent1 != '' and ent2 != '':
,或者只是if ent1 and ent2:
此外,您应该从Entry对象中删除
text
属性。我不知道他们应该怎么做,因为我没有在文档中列出它,但是看起来只要它们都等于一,输入一个条目将导致出现相同的文本在另一个条目中。关于python - 尝试使用tKinter制作GUI时得到“ValueError:int的无效文字”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31569680/