PySimpleGUI中的从右到左文本方向

3
< p > PySimpleGUI Python 库是否支持从右到左的文本对齐?

我想要将阿拉伯语文本从右向左对齐:

enter image description here

代码:

sg.Text("احب الطعام", font='12', size=(15, 1), background_color='#81a5b3')

选项 justification='right' 是什么意思? - Jason Yang
@JAsonYang 不是的,这只是将文本右对齐。 - Minions
你能展示一下“RTL”是什么样子吗? - Jason Yang
@JasonYang,它会产生与“right”相同的输出。 - Minions
1
抱歉,我不懂阿拉伯语,所以不知道所谓的“RTL”的正确方式。也许我知道前进的方式,但不知道前进的目标。 - Jason Yang
这是指“反转”吗?单词= drow?这是否过于简化了你的意思?我认为希伯来语也是类似的。 - Mike from PSG
2个回答

0

**只需添加到您的 sg.text() 元素中。

justification="right"**


请查看@JasonYang的评论。 - Minions

0

这个问题与PySimpleGUI无关,而是与Visual Studio本身有关。 您可以通过以下方式使从右到左的语言(如阿拉伯语、波斯语、希伯来语等)正常工作:

解决方法

  1. 在Visual Studio Code中,按下Ctrl+Shift+P
  2. 在搜索栏中键入>settings,打开Open User Settings (JSON) *
  3. 添加一行"editor.renderControlCharacters": false,并保存settings.json文件。

*您可以将设置应用于当前Windows用户打开的所有内容,适用于User,适用于应用程序的Default,或者仅应用于特定的Workspace

现在,在最近的VS更新后,只需进行上述操作就足以让它正常工作:它将识别您输入的RTL语言。如果由于某种原因它无法正常工作,还可以执行以下操作:

潜在/附加解决方法

  • 在您想要输入的条目开头手动添加Unicode RTF字符U+202B(或者从某个地方复制粘贴,比如 这里)。

我刚才测试了一下,它确实可以正常工作,但似乎不太喜欢复制/粘贴的文本,而更喜欢手动输入。如果由于某种原因它决定不与您合作,对于长条目可能会很麻烦。

键盘切换

您可以绑定一个按键来在从右到左和从左到右之间切换,以便生活更轻松。

  1. Ctrl+Shift+P

  2. 在搜索框中输入并打开Open Keyboard shortcuts(或按下Ctrl+K

  3. editor.action.toggleRenderControlCharacter添加到搜索框中,并设置您想要的任何按键绑定。

这样做的效果是有效地添加/删除解决方案的.json编辑文件(即启用/禁用RTL)。


这样可以使PySimpleGUI的输入从右到左吗?如果不使用Visual Studio呢? - Mike from PSG
它使得在Visual Studio Code本身上可以从右到左显示,这是一个已知的问题,直到最近几年才解决(https://github.com/microsoft/vscode/pull/136347)。即使在Visual Studio 2022中也没有复制这个问题,我不得不安装VSCode来解决它。您可以通过将任何RTL语言(例如阿拉伯语)添加到操作系统键盘,并使用屏幕键盘在VSC与其他IDE(甚至是Web浏览器)中输入一些字符来进行测试。问题出现在Pylance上(与VSC中的Python捆绑在一起)。对于其他IDE,它们应该可以正常工作,无需任何修复或输入/粘贴Unicode字符U+202B。 - m-btt
抱歉,为了澄清一下:对于通过Python应用程序和PySimpleGUI用户文本输入的用户输入,不需要进行修复。这个问题已经由操作系统本身处理好了。这是我在Visual Studio 2022上测试它的一个演示界面的图片:https://cdn.discordapp.com/attachments/313716430321352704/1133827743755292722/image.png - m-btt
错过了编辑时间范围。以下是:用于通过Python应用程序和PySimpleGUI用户文本输入的用户输入,不应该需要修复(不知道是否需要),因为在使用RTL键盘语言时,操作系统会自动处理。在演示GUI上进行测试(与VSS2022无关,除了切换键盘语言外没有做任何更改):https://cdn.discordapp.com/attachments/313716430321352704/1133827743755292722/image.png 我逐个输入了中间行的字母字符,从Enter开始测试,对于我这个没有经过训练的眼睛来说,似乎工作得很好。但复制粘贴的行为可能仍然有些奇怪。 - m-btt
啊...好的,我会删除我的回答...它对任何人都没有帮助,只会造成困惑。谢谢你的澄清。 - Mike from PSG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接