from tkinter import *
a=float(input("a"))
b=float(input("b"))
def abc(x,y):
print(x+y)
root=Tk()
b1=Button(root,text="add", command=abc(a,b))
b1.pack()
root.mainloop()
这是我的机器代码,当用户输入并按下按钮时,该机器可以加两个数字。 但是在这段代码中,即使未按下按钮,功能也会被调用,并且输出将输出到终端上。请在代码中说明原因和更正。 谢谢
答案 0 :(得分:1)
您的解决方案可能是:
您可以使用lambda创建所谓的匿名函数。在各种方面,它都是一个函数,但没有名称。调用lambda命令时,它返回对创建的函数的引用,这意味着该函数可用于按钮的命令选项的值。
from tkinter import *
a = float(input('Enter first value:')
b = float(input('Enter second value:')
root = Tk()
def abc(x,y):
print x+y
b1 = Button(root, text='add', command=lambda: abc(a,b))
b1.pack()
root.mainloop()
答案 1 :(得分:0)
您必须使用lambda
来完成此任务:
@objc func doSomethingAboutLocation(_ notification: Notification) {
if let notificationInfo = notification.userInfo {
let coordinate = CLLocation(latitude: notificationInfo["lat"] as! Double, longitude: notificationInfo["long"] as! Double)
// use your coordinate as you want
}
}
答案 2 :(得分:0)
对于命令参数,您必须传递函数以使其不运行。这意味着您必须传递abc而不是abc()。传递abc()时,创建按钮时会自动调用该函数。 因此,您有2个解决方案:
使用lambda:
b1 = Button(root, text='add', command = lambda a,b: abc(a,b))
或在函数参数中传递输入:
def abc(x=float(input('a')),y=float(input("y"))):
print(x+y)
root=Tk()
b1=Button(root,text="add", command=abc)
b1.pack()
root.mainloop()