如何在 Python 的 customtkinter 的文本框中键入 RTL

How can I type RTL in textbox at customtkinter in Python

提问人:Ali Tny 提问时间:7/10/2023 最后编辑:halferAli Tny 更新时间:7/11/2023 访问量:145

问:

这是一个错误的文本:

text = "سلام s4 خراب است"

真正的文本必须是:

text = "خراب است s4 سلام"

我在 Office Word 中写下了照片中的文字,这样是真的。RTL 必须与 LTR 混合使用。

python tkinter 文本 customtkinter

评论


答:

0赞 Alireza Roshanzamir 7/10/2023 #1

要启用对 Tkinter 和 CustomTkinter 的从右到左 (RTL) 支持,我建议使用 AwesomeTkinter 库。该库提供了许多功能,包括对 RTL 语言的双向支持。

下面是使用您提供的示例中的函数的示例:awesometkinter.bidirender.render_texttext

import customtkinter
from awesometkinter.bidirender import render_text


class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)

        self.textbox = customtkinter.CTkTextbox(master=self, width=400, font=('Tahoma', 20))
        self.textbox.tag_config("right", justify=customtkinter.RIGHT)
        self.textbox.grid(row=0, column=0, sticky="nsew")
        self.textbox.insert("0.0", render_text("سلام s4 خراب است"), "right")


app = App()
app.mainloop()

这是我得到的结果:

enter image description here

评论

0赞 Ali Tny 7/11/2023
您好,AliReza先生,我在输入错误的文本框时遇到了问题,如果我们删除并再次写入错误,请给我这个问题的答案,谢谢
0赞 Alireza Roshanzamir 7/11/2023
@AliTny 您可以使用代替 ?AwesomeTkinter 库提供了对该函数的支持,该函数可以解决您提到的 and 小部件的问题。如果您能够切换到 ,我可以相应地增强我的答案。CTkEntryCTkTextboxadd_bidi_supportEntryLabelCTkEntry