Boo*_*ump 3 python lambda 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()
Run Code Online (Sandbox Code Playgroud)
在另一个文件Untitled我有"获取"功能:
def get (event,loot, entree):
loot=float(entree.get())
print(loot)
Run Code Online (Sandbox Code Playgroud)
当我运行主时我收到以下错误:
Tkinter回调中的异常回溯(最近一次调用最后一次):文件"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/idlelib/run.py",第121行,在主要seq中,request = rpc .request_queue.get(block = True,timeout = 0.05)文件"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/queue.py",第175行,in get raise Empty queue.Empty
在处理上述异常期间,发生了另一个异常:
回溯(最近通话最后一个):文件"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/tkinter/ 初始化的.py",线1533,在调用 返回self.func(*参数)类型错误:()缺少3个必需的位置参数:'evt','Current_Weight'和'entree1'
我怎么解决这个问题?
我认为lambda函数允许我们在依赖于事件的函数中使用一些args.
该command
拉姆达并不需要在所有的任何参数; 此外,没有evt
你可以抓住.lambda可以引用它之外的变量; 这被称为闭包.因此,您的按钮代码应为:
bouton1 = Button(main_window, text="Enter",
command = lambda: get(Current_Weight, entree1))
Run Code Online (Sandbox Code Playgroud)
你get
应该说:
def get(loot, entree):
loot = float(entree.get())
print(loot)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11358 次 |
最近记录: |