dem*_*rto 0 python tkinter tcl
我正在阅读有关msgcat 的内容。
引用文档:
::msgcat::mcunknown 语言环境 src-string ?arg arg ...?
当当前语言环境中未定义 src-string 的翻译时,此例程由 ::msgcat::mc 调用。如果有任何参数,默认操作是返回按格式传递的 src-string。应用程序可以重新定义此过程,例如记录每个未知字符串的错误消息。::msgcat::mcunknown 过程在与调用 ::msgcat::mc 相同的堆栈上下文中调用。::msgcat::mcunknown 的返回值用作调用::msgcat::mc 的返回值。请注意,仅当相关包未设置包区域设置未知命令名称时才会调用此例程。
如何::msgcat::mcunknown
使用 tkinter 在 Python 代码中创建处理程序?
需要两个步骤。首先,您使用该register
方法建立从 Tcl 端到您的代码的桥梁。
def mcunknown_handler(locale, src, *args):
# Stuff in here
handler = tcl.register(mcunknown_handler)
Run Code Online (Sandbox Code Playgroud)
然后你需要让 Tcl 端在正确的时间调用它。这需要小心一点,因为我们不想在 Tcl 端重命名命令,因为 Python 绑定的工作方式(内部有点混乱)。幸运的是,我们可以轻松地将 Tcl 命令委托给另一个命令。
tcl.eval("package require msgcat; interp alias {} msgcat::mcunknown {} " + handler)
Run Code Online (Sandbox Code Playgroud)
整体而言:
def mcunknown_handler(locale, src, *args):
# Stuff in here
handler = tcl.register(mcunknown_handler)
Run Code Online (Sandbox Code Playgroud)
当然,您的区域设置可能有所不同。