我试图在Python中获得一个整数条目

时间:2016-07-13 21:13:47

标签: python python-2.7

这是我的代码:

from Tkinter import *
import tkMessageBox
import tkSimpleDialog

def blank(row, column):
    blank = Label(text=" ")
    blank.grid(row=row, column=column)

def prtent():
    distEnt.getint()
    print distEnt

root = Tk()

#title

root.title("Trip Time Calculator")

label = Label(text="Trip Time Calculator", font=50)
label.grid(columnspan=50)

blank(2, 0)
blank(3, 0)

#distance

distLabel = Label(text="What is your distance?")
distLabel.grid(row=4, column=0)

distEnt = Entry()
distEnt.grid(row=4, column=1)

blank(5, 0)

#speed

speedLabel = Label(text="What is your speed?")
speedLabel.grid(row=6, column=0)

distEnt = Entry()
distEnt.grid(row=6, column=1)

blank(7, 0)

#test button

button = Button(text="Done", command=prtent)
button.grid(row=8, column=0)

root.mainloop()

我的问题是当我在GUI中的字段中输入一个数字时,在控制台中返回的所有内容都是" .42880656"。我想要的应用程序是你可以输入你的距离和速度,并在Python 2.7中得到一个近似的ETA。

1 个答案:

答案 0 :(得分:0)

print distEnt

这是你的问题...... distEnt是一个Entry(),而不是一个数字。我相信它应该看起来像......

dist = distEnt.getint()
print dist

进一步解释......

Entry()distEnt是屏幕上显示的实际组件。将它作为整数提取没有任何意义 - 它是一个文本框。它有一个有用的函数.getint(),它返回格式为整数的文本框的内容。如果要对这些内容执行某些操作,可以获取该数字并将其放入变量中,然后使用该变量来执行业务逻辑。如果将该变量设置为其他值,则会丢失对GUI中文本框的引用。

您实际看到的错误是Python的事情。您可以在不执行任何操作的情况下从下一个范围继承变量...

a_number = 7
def a_func():
    print a_number # 7

会奏效。但是,如果您尝试分配给该变量,它将假设您一定犯了错误(为什么要尝试在函数中改变全局状态?!?)并抛出错误。在这种情况下,你必须使用global关键字继承全局变量,告诉解释器是的,你的意思是这样。

a_number = 7
def a_func():
    print a_number
    a_number = 42 # exception


a_number = 7
def a_func():
    global a_number
    print a_number # 7
    a_number = 42 
f()
print a_number # 42

还有一点 - 如果你在变异之前给它分配,你就不会得到异常...因为函数范围中的变量名是一个与全局变量无关的全新本地。如果在变异之前尝试使用全局变量,则只能获得异常。

a_number = 7
def a_func():
    a_number = 42
    print a_number # 42
f()
print a_number # 7