这是我的代码:
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。
答案 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