用在 QPlainTextEdit 小部件中插入四个空格替换所有制表符操作
Replace all tab operations with inserting four spaces in QPlainTextEdit widget
我有一个 QPlainTextEdit 对象,我在我的一个工具中将其用作迷你 python 编辑器。问题是,当您在 QPlainTextEdit 中插入一个制表符时,它会插入一个很大的制表符,而不是像我希望的那样插入四个空格。
有没有办法覆盖此功能,就像在 Notepad++ 等程序中一样?
使用 setTabStopWidth(width)
方法更改 space 一个选项卡占用的大小。它需要以像素为单位的宽度。默认值为 80。
如果需要用四个space替换所有的tab,可以从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()
我知道这个问题大约三岁了但是。我刚刚遇到了类似的问题。如果您想用空格替换制表符,您可以覆盖 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)
我有一个 QPlainTextEdit 对象,我在我的一个工具中将其用作迷你 python 编辑器。问题是,当您在 QPlainTextEdit 中插入一个制表符时,它会插入一个很大的制表符,而不是像我希望的那样插入四个空格。
有没有办法覆盖此功能,就像在 Notepad++ 等程序中一样?
使用 setTabStopWidth(width)
方法更改 space 一个选项卡占用的大小。它需要以像素为单位的宽度。默认值为 80。
如果需要用四个space替换所有的tab,可以从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()
我知道这个问题大约三岁了但是。我刚刚遇到了类似的问题。如果您想用空格替换制表符,您可以覆盖 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)