情况是这样的:
我有一个 XML 文件,其中包含我的应用程序的菜单层次结构。我可以显示菜单,但在 XML 文件中定义回调仅返回字符串。
更明确的问题: 我需要一种通过字符串回调函数的方法。是的,有
lambda x: pass
交易,但我不确定这就是我需要的。
最佳答案
I need a way to callback functions via a string.
根据对您问题的评论,我了解到您想要执行以下操作:
# ...
callback_str = getcallback_str() # e.g., 'self.logic.account_new'
callback = eval_dottedname(self, callback_str)`
在这种情况下,eval_dottedname()
函数可以实现为:
def eval_dottedname(obj, dottedname):
if dottedname.partition(".")[0] != 'self': # or some other criteria
# to limit the context
raise ValueError
return reduce(getattr, dottedname.split('.')[1:], obj)
更好的方法是将字符串回调限制为简单的标识符,并使用像 stdlib 的 cmd
module 这样的调度表。 :
def dispatch(self, callback_str):
return getattr(self, 'do_' + callback_str, self.default)()
def do_this(self):
pass
def do_that(self):
pass
关于python - Tkinter 字符串回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5446372/