希伯来语与 tkinter - BiDi

Hebrew with tkinter - BiDi

我正在开发 python GUI 应用程序,使用 tkinter,它以希伯来语显示文本。

On Windows (10, python 3.6, tkinter 8.6) 希伯来语字符串显示正常。

在 Linux 上(Ubuntu 14,python 3.4 和 3.6,tkinter 8.6)希伯来语字符串显示不正确 - 没有 BiDi 意识 - 我是缺少什么?

我安装了 pybidi,并通过 bidi.algorithm.get_display(hebrew_string) - 字符串显示正确。
但是,在 Windows 上,get_display(hebrew_string) 显示不正确。

python-tkinter-Linux 不支持 BiDi 吗?
我必须用 get_display(string) 包裹每个字符串吗?
我必须用 only_on_linux(...) 函数包装 get_display(string) 吗?

我搜索了一下,这是一个已知问题 tk/tcl 从 2011 年左右开始使用 Windows bidi 支持,但它们在 linux 上显然没有等同物。示例:https://wiki.tcl.tk/3158. One answer to Python/Tkinter: Using Tkinter for RTL (right-to-left) languages like Arabic/Hebrew? 有一些针对 *nix 的解决方法。我不确定 Mac 是否支持最新的 tcl/tk。

对于跨平台工作,您需要一个在 Windows 上回显并在 Ubuntu 上反转的功能。

作为 FriBidi 的主要作者和 Gtk 中 bidi 文本支持的贡献者,我强烈建议您不要将 TkInter 用于任何希伯来文或除拉丁文、希腊文或西里尔文字以外的任何其他文本.理论上,您可以使用 Linux 上的独立 fribidi 可执行文件重新排列文本顺序,或者使用 fribidi 绑定,但 bidi 和复杂语言支持远远不止于此。您可能需要支持文本插入、剪切和粘贴、整形,这只是其中的一些陷阱。你最好使用优秀的 gtk 或 Qt 绑定到 python。