python - Tkinter 字符串回调

标签 python function menu tkinter

情况是这样的:

我有一个 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/

相关文章:

opengl - 过多的弹出菜单

python - 获取python标准库函数名称列表

java - 在 jython jar 中导入 Flask 模块

将包和函数作为另一个函数中的参数引用

android - 按下 Android 菜单按钮时如何访问我自己的 Activity ?

android - 选项菜单显示缓慢

python - 计算特定字符串在列表中出现的频率

python - 如何使用 pygame 进行绘图,同时使用 pyopengl 进行绘图?

JavaScript 闭包问题

python - Python 类的 __init__ 方法中的 self 是什么?