如何将参数绑定到Python方法以存储一个用于以后调用的nullary仿函数?与C++类似boost::bind.
例如:
def add(x, y):
return x + y
add_5 = magic_function(add, 5)
assert add_5(3) == 8
Run Code Online (Sandbox Code Playgroud) #!/usr/bin/python3
from Tkinter import *
def keypress(key):
print key, "pressed"
if __name__ == '__main__':
root = Tk()
root.bind('<Return>', keypress(key="enter"))
root.bind('a', keypress(key="a"))
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我意识到程序一启动就会调用该函数,但我不知道如何将参数传递给 keypress 函数而不立即调用它。有人可以解释如何修复它吗?
更新代码:
#!/usr/bin/python3
from Tkinter import *
def keypress(key):
print key, "pressed"
root = Tk()
root.bind("<Return>", lambda event: keypress(key="enter"))
root.bind("a", lambda event: keypress(key="a"))
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 我有一个普遍的问题,我无法真正找到答案,所以希望你们可以提供帮助.我有一个带3个参数的函数,下面是我所拥有的一个例子.
def someFunction(self, event, string):
do stuff ..
self.canvas.bind("<Button-1>", self.someFunction("Hello"))
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到一个错误,说我通过了一些功能2参数而不是3.我不知道为什么..
我试图让按钮在按下时打印一个字符串,并在释放时打印另一个。我知道command属性和bind方法,但我想知道是否可以仅使用属性来完成它,或者我是否必须使用方法。用这段代码:
class motor:
def __init__(eleMesmo, eixo , valorZero):
eleMesmo.eixo = eixo
eleMesmo.zero = valorZero
def aumenta(self):
print(self.eixo + str(self.zero+5))
def diminui(self):
print(self.eixo + str(self.zero-5))
def para(self):
print(self.eixo + str(self.zero))
eixox = motor('x',90)
eixoy = motor('y',90)
class Interface:
def __init__(elemesmo, widget):
quadro = Frame(widget)
quadro.pack()
elemesmo.aumentarY = Button(quadro,text="Aumentar Y",height=10,width=20,command=eixoy.aumenta)
elemesmo.aumentarY.pack(side=TOP)
elemesmo.diminuirY = Button(quadro,text="Diminuir Y",height=10,width=20,command=eixoy.diminui)
Run Code Online (Sandbox Code Playgroud)
我可以在按下按钮时调用aumenta对象的方法。我想在释放按钮时调用对象的方法。我该怎么做?eixo yaumentarYparaeixo yaumentarY