-3

我写了一些简单的代码来描述我的问题:我想从一个条目中获取一个整数值以便以后使用它。我也尝试使用一个旋转框。这是我的代码:

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 ' '

我不知道为什么会这样!

4

2 回答 2

1

例如,您的示例中有几个问题。您在哪个时刻试图从 Entry 中获得价值?

您的代码应类似于:

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()

输入整数并按计算的示例

在此处输入图像描述

输入字符串并按计算的示例

在此处输入图像描述

于 2020-04-10T11:21:06.890 回答
1

ValueError: int() 的无效文字,基数为 10 ' '

表示您正在尝试将字符串 "" 转换为整数。这当然是无效的。您尝试将空字符串转换为整数的原因是您不允许将任何值放入条目中。

允许这种情况发生的一个好方法是使用一个按钮,它调用一个函数来获取条目中的值并打印它。此外,您缺少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()

如果条目中的值不是有效整数,此代码仍会返回错误,因此如果您希望它健壮,您将不得不使用它。

于 2020-04-10T11:15:32.647 回答