如何更改 QPlainTextEdit 中制表符的宽度

How to change the width of tabs in a QPlainTextEdit

在 PyQt5 中使用 QPlaintextEdit 时,如果我按下键盘上的 Tab 按钮,我会得到一个制表符 space,其大小等于六个 [=19] =] 在一起。但我希望它是四个 space 的大小,这样当我使用时:

TextEdit.setPlainTextEdit('\t')

我应该得到制表符 space 的缩进,总共有四个 space 秒。

我尝试使用四个 space 来代替制表符 space,但是随着代码变得越来越长,事情变得复杂了。

选项卡的宽度可以用 setTabStopDistance. This takes a floating-point value, which can be calculated by using the QFontMetricsF class:

textedit = QtWidgets.QPlainTextEdit()
textedit.setTabStopDistance(
    QtGui.QFontMetricsF(textedit.font()).horizontalAdvance(' ') * 4)

但是这个方法是在Qt-5.10才引入的,所以对于Qt4和Qt5的旧版本,必须使用setTabStopWidth(现在记录为obsolete):

textedit = QtWidgets.QPlainTextEdit()
textedit.setTabStopWidth(textedit.fontMetrics().width(' ') * 4)

此方法的最大缺点是它只需要 整数 个值。这意味着不能保证使用具有非整数字符宽度的字体(例如 DejaVu 字体和许多其他字体)提供准确的结果。