【问题标题】:How to change the width of tabs in a QPlainTextEdit如何更改 QPlainTextEdit 中选项卡的宽度
【发布时间】:2018-10-15 21:09:54
【问题描述】:

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

TextEdit.setPlainTextEdit('\t')

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

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

【问题讨论】:

    标签: python-3.x pyqt5 indentation qplaintextedit


    【解决方案1】:

    标签的宽度可以用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 字体和许多其他字体)给出准确的结果。

    【讨论】:

    • 这些天 QFontMetrics::width() 已被弃用(我相信从 Qt-5.11 开始)。从现在开始建议改用QFontMetricsF::horizontalAdvance()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    相关资源
    最近更新 更多