10

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

TextEdit.setPlainTextEdit('\t')

我应该得到一个制表符空格的缩进,总共有四个空格。

我尝试使用四个空格而不是制表符空格,但随着代码变得更加冗长,事情变得复杂了。

4

1 回答 1

12

可以使用setTabStopDistance设置选项卡的宽度。这需要一个浮点值,可以使用QFontMetricsF类计算:

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

但是,这种方法仅在 Qt-5.10 中引入,因此对于 Qt4 和旧版本的 Qt5,您必须使用setTabStopWidth(现在记录为已过时):

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

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

于 2018-05-05T18:41:02.503 回答