我有一个QPlainTextEdit对象,我在其中一个工具中用作迷你python编辑器。问题是当你在QPlainTextEdit中插入一个标签时,它会插入一个很棒的大标签,而不是像我喜欢的那样插入四个空格。
有没有办法覆盖此功能,就像在Notepad ++等程序中一样?
答案 0 :(得分:1)
使用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()
答案 1 :(得分:1)
我知道这个问题已经问了三年了,但是。我刚刚遇到了类似的问题。如果您想用空格替换制表符,您可以覆盖 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)