我有一个QPlainTextEdit对象,我在其中一个工具中使用它作为迷你python编辑器。问题是,当您在QPlainTextEdit中插入一个选项卡时,它会插入一个很大的选项卡,而不是我喜欢的四个空格。
有没有一种方法可以像在Notepad++这样的程序中那样覆盖这个功能呢?
发布于 2017-08-25 04:32:39
使用setTabStopWidth(width)
方法更改一个选项卡占用的空间。它的宽度以像素为单位。缺省值为80。
如果需要用四个空格替换所有制表符,可以从qtextedit获取字符串,然后替换它们。
s= text_edit.toPlainText()
s= s.replace('\t', ' ')
改变QTextEdit
中的制表符宽度
from PyQt5.QtWidgets import *
import sys
class Wind(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(300,300, 300,500)
self.show()
vb_layout= QVBoxLayout(self)
text_edit= QTextEdit(self)
# This method sets tab width in pixels
text_edit.setTabStopWidth(8)
vb_layout.addWidget(text_edit)
self.setLayout(vb_layout)
def main():
app= QApplication(sys.argv)
w = Wind()
exit(app.exec_())
if __name__ == '__main__':
main()
发布于 2021-06-28 07:20:34
我知道问题在三岁左右,但是。我只是遇到了一个类似的问题。如果要用空格替换制表符,可以重写keyPressEvent函数,并创建一个新事件,该事件包含空格而不是选项卡。
def keyPressEvent (self, oEvent):
if oEvent.key () == Qt.Key_Tab:
oEvent = QKeyEvent (QEvent.KeyPress
, Qt.Key_Space
, Qt.KeyboardModifiers(oEvent.nativeModifiers())
, " ")
super().keyPressEvent (oEvent)
https://stackoverflow.com/questions/45880941
复制相似问题