为了账号安全,请及时绑定邮箱和手机立即绑定

使用 get 方法作为参数传递 tkinter 变量

使用 get 方法作为参数传递 tkinter 变量

长风秋雁 2023-12-20 20:00:14
我读过这个问题的答案:在 Tkinter 中如何传递被调用函数作为参数?虽然它看起来相关,但它似乎并没有回答我的问题,因为上述问题中的问题在于调用用户定义的函数。我将一个被调用的方法(tkinter StringVar 的 .get() 方法)传递给内置的“print”函数。我的代码如下:import tkinter as tkfrom functools import partialdef print_called(variable):    print(variable.get())try:    root = tk.Tk()    var = tk.StringVar()    options = tk.OptionMenu(root, var, 'string 1', 'string 2', 'string 3', 'string 4')    button_1 = tk.Button(root, text='button_1', command=partial(print_called, var))    button_2 = tk.Button(root, text='Button_2', command=partial(print, var.get()))    options.pack()    button_1.pack()    button_2.pack()finally:    root.mainloop()我运行上面的代码并从菜单中选择“字符串 1”。当我单击“button_1”时,它会按预期打印“字符串 1”。当我单击“button_2”时,它会打印一个空行。我的问题是:为什么会出现这种情况?两者为何有差异?如何将 var.get() 的结果(即字符串“string 1”)作为参数传递给函数?
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

command=partial(print, var.get())button_2创建时直接评估。此时未选择任何内容,并var.get()返回空字符串。

您可以使用 lambda 函数: command=lambda: print(var.get()),但这与您在 中所做的几乎相同button_1,只是使用 lambda 函数而不是普通函数。


查看完整回答
反对 回复 2023-12-20
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信