我写了一些简单的代码来描述我的问题:我想从一个条目中获取一个整数值以供以后使用,我还尝试使用旋转框。这是我的代码:
from tkinter import*
win=Tk()
win.geometry('300x200')
e=Entry(width=10)
e.pack()
y=int(e.get())
print(y*2)
我总是遇到相同的错误:
y = int(e.get())
ValueError:int()以10为底的无效文字''
我不知道为什么会这样!
答案 0 :(得分:1)
ValueError:以10为底的int()的无效文字''
表示您正在尝试将字符串“”转换为整数。当然,这是无效的。您尝试将空字符串转换为整数的原因是,您不允许将任何值放入条目中。
允许这种情况发生的一种好方法是使用一个按钮,该按钮调用一个函数以获取条目中的值并进行打印。另外,您缺少在代码末尾需要的行win.mainloop()
。
这是您可能需要的示例代码:
from tkinter import *
win = Tk()
win.geometry('300x200')
def printVal():
y = int(e.get())
print(y*2)
e = Entry(width=10)
e.pack()
b = Button(text="push me to print the value in e")
b.pack()
win.mainloop()
如果条目中的值不是有效的整数,则此代码仍将返回错误,因此,如果要使其健壮,则必须对其进行处理。
答案 1 :(得分:1)
您的代码应类似于:
from tkinter import *
def validate(value):
print (value)
try:
if value:
return int(value)
except:
return None
def calculate():
x = e1.get()
x_validate = validate(x)
if x_validate == None:
e1.delete(0, END)
e1.insert(0, 'you need to enter integer')
Label1.config(text='')
else:
result = x_validate*2
Label1.config(text=result)
win = Tk()
e1 = Entry(win)
e1.grid(row=0, column=0)
Button(win,text='Calculate', command = calculate).grid(row=0, column=1)
Label(win,text='Result').grid(row=1, column=0)
Label1 = Label(win)
Label1.grid(row=1, column=1)
win.mainloop()
示例,如果您输入整数并按计算
示例,如果您输入字符串并按计算