如何在tkinter中将文本对齐方式设置为“Justify”?

3
我正在尝试从tkinter文本中调整文本的对齐方式。其他答案(How to set justification on Tkinter Text box)说这是我的答案。我正在尝试使用这段代码(我正在使用tkinter 8.6和Python 3):
import tkinter
root = tkinter.Tk()
text_widget = tkinter.Text()
text_widget.pack(fill='both', expand=True)
text_widget.tag_configure('tag-center', justify='justify')
text_widget.insert('end', 'text ' * 10, 'tag-center')

但是,如果我运行这段代码:
Traceback (most recent call last):
  File "C:/Users/moon/AppData/Local/Programs/Python/Python310/asking1.py", line 5, in <module>
    text_widget.tag_configure('tag-center', justify='justify')
  File "C:\Users\moon\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 3888, in tag_configure
    return self._configure(('tag', 'configure', tagName), cnf, kw)
  File "C:\Users\moon\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1665, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: bad justification "justify": must be left, right, or center

它说:“_tkinter.TclError: 错误的对齐方式“justify”:必须是左、右或中,但没有“justify”。我发现 MS Word和 LO Writer都有Justify。怎么办?谢谢!”

请点击此链接:Word对齐


1
@BryanOakley 我认为 OP 想要通过在单词之间插入额外的空格来扩展文本,以使文本的最终长度等于文本框的宽度。因此,支持值中没有一个符合条件。 - acw1668
1
这个问题的答案中的示例链接可能会有所帮助。 - acw1668
2个回答

1

实际上,tkinter中没有任何的justicfy函数。它只有"left"(tk.LEFT)"center"(tk.CENTER)或者"right"(tk.RIGHT)

但是不要失望,就像Jason先生所说,pyqt5具有以下对齐选项:

import PyQt5.QtCore
# import PySide5.QtCore

PyQt5.QtCore.Qt.AlignLeft      # PySide6.QtCore.Qt.AlignLeft
PyQt5.QtCore.Qt.AlignHCenter   # PySide6.QtCore.Qt.AlignHCenter
PyQt5.QtCore.Qt.AlignRight     # PySide6.QtCore.Qt.AlignRight
PyQt5.QtCore.Qt.AlignJustify   # PySide6.QtCore.Qt.AlignJustify
PyQt5.QtCore.Qt.AlignTop       # PySide6.QtCore.Qt.AlignTop
PyQt5.QtCore.Qt.AlignBottom    # PySide6.QtCore.Qt.AlignBottom
PyQt5.QtCore.Qt.AlignVCenter   # PySide6.QtCore.Qt.AlignVCenter
PyQt5.QtCore.Qt.AlignBaseline  # PySide6.QtCore.Qt.AlignBaseline

那么为什么不开心地使用PyQt5来进行GUI应用程序呢? :)

编辑:

如果您正在使用QTextEdit,您还可以使用PyQt5.QtWidgets.QTextEdit.setAlignment([Justification])来设置对齐方式。


0

遗憾的是,Tkinter Text 只有三种对齐选项:左对齐居中对齐右对齐。但不要失望,您可以尝试使用标签和选项配置来发现称为spacing2的东西。试试吧!

P.S. 您也可以尝试 PyQt5。它们可能具有对齐选项。wxPython 也是一个不错的选择。


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