我正在使用tkinter开发一个python应用程序,它以希伯来语显示文本。
在Windows (10,python3.6,tkinter8.6)上,希伯来字符串显示得很好。
在Linux (Ubuntu 14,python3.4和3.6,tkinter8.6)中,希伯来字符串显示错误--没有BiDi意识--是我遗漏了什么吗?
我安装了pybidi,并通过bidi.algorithm.get_display(hebrew_string)正确地显示了字符串。
但是,在Windows上,get_display(hebrew_string)被错误地显示了。
在上不支持BiDi吗?
必须用get_display(string)包装每个字符串吗?
必须用get_display(string)函数包装only_on_linux(...)吗?
发布于 2017-11-13 00:12:17
我搜索了一下,这是一个已知的问题,tk/tcl从2011年起就使用了Windows支持,但在linux上它们显然并不等同。例子:https://wiki.tcl.tk/3158.Python/Tkinter: Using Tkinter for RTL (right-to-left) languages like Arabic/Hebrew?的一个解决方案是为*nix提供一些解决方案。我不确定最新的tcl/tk是否支持Mac。
对于跨平台工作,您将需要一个在Windows上回响和在Ubuntu上倒转的函数。
发布于 2018-03-25 15:28:12
与FriBidi的主要作者以及Gtk中bidi文本支持的贡献者一样,我强烈建议您不要将TkInter用于任何希伯来文或除拉丁文、希腊文或西里尔文以外的任何其他文本。理论上,您可以在Linux上使用独立的fribidi可执行文件重新排列文本顺序,或者使用fribidi绑定,但是bidi和复杂的语言支持远远超出了这一点。您可能需要支持文本插入、剪切和粘贴、整形,仅举几个缺陷。您最好使用优秀的gtk或Qt绑定到python。
https://stackoverflow.com/questions/47249474
复制相似问题