我使用python和twisted编写了一个snmp管理程序,其中一部分需要客户端上的一些按钮绑定到远程snmp set方法,这是由透视代理处理的。
for item in devicevars[current+" buttons"]:
ttk.Label(buttonframe, text=item + ":").grid(column=1, row=i2, sticky=(E))
ttk.Button(buttonframe,width = 3,textvariable=guivars["%s %s" %(current,
item)],command=remoteButton(current, item)).grid(column=2, row=i2, sticky=(W))
i2 = i2+1
def remoteButton(dname, value):
rbutton= pbfactory.getRootObject()
rbutton.addCallback(lambda object: object.callRemote("SNMP", dname, value))
rbutton.addErrback(lambda reason: 'error: '+str(reason.value))
问题是此代码会导致远程方法在客户端启动后立即触发。有谁知道为什么会这样?