使用 Tkinter 按钮时在 lambda 函数中返回值
Returning values in lambda function while using Tkinter button
我利用 lambda 函数调用了两个不同的函数(read_input_data(),它从 GUI 读取数据 a 和 b,以及 运行,它获取数据 a 和 b 以及进行一些计算)按下 Tkinter 按钮后
start_button = tk.Button(text = 'Start', command = lambda:[ [a,b] = read_input_data(), run(a,b)], bg = 'firebrick', fg = 'white', font = ('helvetica', 9, 'bold'))
但是,returns 语法错误。如果我从 read_input_data() 中删除输出 [a,b],语法将变得正确,但我的代码将无法工作,因为我需要 a 和 b 来执行第二个函数 运行(a,b ).
Lambdas 只是一个 shorthand 符号,在功能上与使用 def
定义的普通函数没有太大区别,除了只允许 单个表达式
x = lambda a, b: a + b
真的等同于
def x(a, b):
return a + b
以同样的方式,你尝试做的与做的没有什么不同:
def x():
a, b = read_input_data()
run(a, b)
start_button = tk.Button(text = 'Start', command = x, bg = 'firebrick', fg = 'white', font = ('helvetica', 9, 'bold'))
我利用 lambda 函数调用了两个不同的函数(read_input_data(),它从 GUI 读取数据 a 和 b,以及 运行,它获取数据 a 和 b 以及进行一些计算)按下 Tkinter 按钮后
start_button = tk.Button(text = 'Start', command = lambda:[ [a,b] = read_input_data(), run(a,b)], bg = 'firebrick', fg = 'white', font = ('helvetica', 9, 'bold'))
但是,returns 语法错误。如果我从 read_input_data() 中删除输出 [a,b],语法将变得正确,但我的代码将无法工作,因为我需要 a 和 b 来执行第二个函数 运行(a,b ).
Lambdas 只是一个 shorthand 符号,在功能上与使用 def
定义的普通函数没有太大区别,除了只允许 单个表达式
x = lambda a, b: a + b
真的等同于
def x(a, b):
return a + b
以同样的方式,你尝试做的与做的没有什么不同:
def x():
a, b = read_input_data()
run(a, b)
start_button = tk.Button(text = 'Start', command = x, bg = 'firebrick', fg = 'white', font = ('helvetica', 9, 'bold'))