【问题标题】:Returning value from function and inserting to Entry widget从函数返回值并插入到 Entry 小部件
【发布时间】:2017-04-29 11:16:06
【问题描述】:

嘿,我正在使用 Tkinter 构建一个简单的步速计算器。我设法获得了计算所需的 2 个值,我想在第三个 Entry 小部件中返回我的计算。我有两个函数将get_value 返回到控制台窗口。接下来我想对get_valueget_value1 进行计算并插入第三个输入框。

也有人可以向我解释为什么在return_minreturn_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_minreturn_sec 回调中打印 en 并查看它的内容。
  • @PM2Ring 我在函数中打印了'(en) 的结果,上面写着
  • @Maxxer 没错。当您使用.bind 时,回调函数接收触发回调的 Tkinter 事件对象。您可以从该对象中提取有用的数据。有关详细信息,请参阅文档。
  • 顺便说一句,向用户显示内容的最简单方法是使用标签。您可以调用 Lebel 的 .config 方法将其文本更改为不同的字符串。标签可以包含多行文本。

标签: python tkinter


【解决方案1】:

如果你想在你的E3tkinter.Entry 中“插入”一些值,你可以这样做:

E3.delete(0, END)
E3.insert(0, your_value)

我必须说Entry 小部件用于输入数据,而不是输出!但我可以告诉你,你才刚刚开始尝试,所以如果你需要更多帮助,请告诉我。

【讨论】:

  • 好的,我明白了,所以显示输出的最佳方式是使用 tkinter.Message 或其他东西?
  • @Maxxer 是的,你可以做到!这真的取决于你的最终目标。如果您只是想学习 python 和 tkinter:尝试所有不同的方法来返回您的值,并熟悉 tkinter 的工作方式以及哪些小部件适用于哪种输入/输出。如果您只是将其用于快速计算,请保持原样!如果每次计算都需要关闭弹出窗口,Message 小部件会很烦人。
  • 我正在尝试使用 Text.insert(0, get_value) 方法插入我的值,但仍然出现 NameError: name 'get_value' is not defined。我猜 get_value 仅在函数内部,我无法在外部访问它。有什么建议吗?
  • 你是对的。你为什么不创建一个按钮小部件,一旦点击,.gets 来自E1E2 的值,而不是.inserts 你的计算机值到E3
  • 感谢您的帮助!我现在正在使用带有command 功能的按钮,它可以做所有事情,从使用.get() 获取来自E1E2 的输入转换速度并将其插入E3。完美运行。
猜你喜欢
  • 2011-02-06
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 2021-05-10
  • 2017-07-17
  • 2019-06-22
  • 2020-08-16
  • 2016-08-15
相关资源
最近更新 更多