1

问题很简单,滚动的文本框将用阿拉伯语写入其中。因此,每当我在框的右侧键入它们的无属性时,我都需要对齐文本,例如justify我也使用了标签,但我做不到

 show_note = scrolledtext.ScrolledText(canvas, width=int(monitorWidth / 65), height=int(monitorHeight / 130),
                                              font=("Times New Roman", 14))
        canvas.create_window(cord(0.45, 0.65), window=show_note, anchor="ne")

它们是否可以替代滚动文本,但具有这些属性(宽度、高度、对齐并且可以写入多行)?

4

1 回答 1

1

我做了一些搜索,除了将每个按键绑定到一个函数之外,找不到任何其他方法,该函数添加/编辑标签以从文本框中选择所有项目:

from tkinter import *
from tkinter import scrolledtext

root = Tk()

def tag(e):
    text.tag_add('center','1.0','end')

text = scrolledtext.ScrolledText(root)
text.pack()
text.tag_config('center',justify='right')

text.bind('<KeyRelease>',tag)

root.mainloop()

您还可以制作执行此操作的自定义小部件,而不是为每个文件重复代码,因此更好的形式是:

from tkinter import *
from tkinter import scrolledtext

root = Tk()

class JustifyText(scrolledtext.ScrolledText):
    def __init__(self,master,*args,**kwargs):
        scrolledtext.ScrolledText.__init__(self,master,*args,**kwargs)
        self.tag_config('center',justify='right')
        
        self.bind('<KeyRelease>',self.tag)

    
    def tag(self,e):
        text.tag_add('center','1.0','end')

text = JustifyText(root)
text.pack()


root.mainloop()

是的,您可以通过获取文本框的当前宽度并将插入光标移动到该点来使其更加完美,使其从该点开始。

于 2021-10-27T18:39:10.987 回答