使用来自 Tkinter 的 'command = ' 中的 lambda 函数。
Using the lambda function in 'command = ' from Tkinter.
这是一个非常容易理解的代码:
主要内容:
import pdb
#pdb.set_trace()
import sys
import csv
sys.version_info
if sys.version_info[0] < 3:
from Tkinter import *
else:
from tkinter import *
from Untitled import *
main_window =Tk()
main_window.title("Welcome")
label = Label(main_window, text="Enter your current weight")
label.pack()
Current_Weight=StringVar()
Current_Weight.set("0.0")
entree1 = Entry(main_window,textvariable=Current_Weight,width=30)
entree1.pack()
bouton1 = Button(main_window, text="Enter", command= lambda evt,Current_Weight,entree1: get(evt,Current_Weight,entree1))
bouton1.pack()
在另一个无标题文件中,我有 "get" 函数:
def get (event,loot, entree):
loot=float(entree.get())
print(loot)
当我 运行 主要我收到以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/idlelib/run.py", line 121, in main
seq, request = rpc.request_queue.get(block=True, timeout=0.05)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/queue.py", line 175, in get
raise Empty
queue.Empty
在处理上述异常的过程中,又发生了一个异常:
回溯(最后一次调用):
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/tkinter/init.py”,第 1533 行,在 打电话
return self.func(*参数)
TypeError: () 缺少 3 个必需的位置参数:'evt'、'Current_Weight' 和 'entree1'
我该如何解决?
我认为 lambda 函数允许我们在 event-dependant 函数中使用一些参数。
command
lambda 根本不接受任何参数;此外,没有 evt
可以捕获。 lambda 可以引用它外部的变量;这称为关闭。因此你的按钮代码应该是:
bouton1 = Button(main_window, text="Enter",
command = lambda: get(Current_Weight, entree1))
你的 get
应该说:
def get(loot, entree):
loot = float(entree.get())
print(loot)
实际上,您只需要Entry 对象entree1 作为lamda 传入参数。以下任何一种说法都可以。
bouton1 = Button(main_window, text="Enter", command=lambda x = entree1: get(x))
bouton1 = Button(main_window, text="Enter", command=lambda : get(entree1))
函数定义为
def get(entree):
print(float(entree.get()))
这是一个非常容易理解的代码:
主要内容:
import pdb
#pdb.set_trace()
import sys
import csv
sys.version_info
if sys.version_info[0] < 3:
from Tkinter import *
else:
from tkinter import *
from Untitled import *
main_window =Tk()
main_window.title("Welcome")
label = Label(main_window, text="Enter your current weight")
label.pack()
Current_Weight=StringVar()
Current_Weight.set("0.0")
entree1 = Entry(main_window,textvariable=Current_Weight,width=30)
entree1.pack()
bouton1 = Button(main_window, text="Enter", command= lambda evt,Current_Weight,entree1: get(evt,Current_Weight,entree1))
bouton1.pack()
在另一个无标题文件中,我有 "get" 函数:
def get (event,loot, entree):
loot=float(entree.get())
print(loot)
当我 运行 主要我收到以下错误:
Exception in Tkinter callback Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/idlelib/run.py", line 121, in main seq, request = rpc.request_queue.get(block=True, timeout=0.05) File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/queue.py", line 175, in get raise Empty queue.Empty
在处理上述异常的过程中,又发生了一个异常:
回溯(最后一次调用): 文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/tkinter/init.py”,第 1533 行,在 打电话 return self.func(*参数) TypeError: () 缺少 3 个必需的位置参数:'evt'、'Current_Weight' 和 'entree1'
我该如何解决?
我认为 lambda 函数允许我们在 event-dependant 函数中使用一些参数。
command
lambda 根本不接受任何参数;此外,没有 evt
可以捕获。 lambda 可以引用它外部的变量;这称为关闭。因此你的按钮代码应该是:
bouton1 = Button(main_window, text="Enter",
command = lambda: get(Current_Weight, entree1))
你的 get
应该说:
def get(loot, entree):
loot = float(entree.get())
print(loot)
实际上,您只需要Entry 对象entree1 作为lamda 传入参数。以下任何一种说法都可以。
bouton1 = Button(main_window, text="Enter", command=lambda x = entree1: get(x))
bouton1 = Button(main_window, text="Enter", command=lambda : get(entree1))
函数定义为
def get(entree):
print(float(entree.get()))