【发布时间】:2017-04-29 11:16:06
【问题描述】:
嘿,我正在使用 Tkinter 构建一个简单的步速计算器。我设法获得了计算所需的 2 个值,我想在第三个 Entry 小部件中返回我的计算。我有两个函数将get_value 返回到控制台窗口。接下来我想对get_value 和get_value1 进行计算并插入第三个输入框。
也有人可以向我解释为什么在return_min 和return_sec 函数中需要en 参数才能工作?
from tkinter import *
top = Tk()
top.title("Pace Calculator")
def return_min(en):
get_value = E1.get()
get_value = int(get_value)
get_value *= 2
print(get_value)
def return_sec(en):
get_value = E2.get()
get_value = int(get_value)
get_value *= 3
print(get_value)
L1 = Label(top, text="minutes")
L1.grid(row=0, column=0)
E1 = Entry(top, bd=5)
E1.grid(row=1, column=0)
E1.bind('<Return>', return_min)
L2 = Label(top, text=" seconds")
L2.grid(row=2, column=0)
E2 = Entry(top, bd=5)
E2.grid(row=3, column=0)
E2.bind('<Return>', return_sec)
L3 = Label(top, text = "Pace")
L3.grid(row = 4, column = 0)
E3 = Entry(top, bd=5)
E3.grid(row=5, column=0)
top.mainloop()
【问题讨论】:
-
为什么要在第三个 Entry 小部件中显示计算结果?条目小部件旨在接受用户输入,而不是显示输出。您可以将输出放入条目中,但这通常仅在您希望用户修改该输出并重新提交修改后的数据时完成。至于您的第二个问题,请尝试在您的
return_min或return_sec回调中打印en并查看它的内容。 -
@PM2Ring 我在函数中打印了'(en) 的结果,上面写着
-
@Maxxer 没错。当您使用
.bind时,回调函数接收触发回调的 Tkinter 事件对象。您可以从该对象中提取有用的数据。有关详细信息,请参阅文档。 -
顺便说一句,向用户显示内容的最简单方法是使用标签。您可以调用 Lebel 的
.config方法将其文本更改为不同的字符串。标签可以包含多行文本。