环境:
pyqt5 python3.6
需求:insertplaintext随着内容的增加执行时间越来越长,导致gui卡顿。而appenplaintext没有这个问题,但是会添加一个换行....
测试代码:
# -*- coding: utf-8 -*-
import sys
from time import clock
from PyQt5.Qt import *
from PyQt5.QtWidgets import *
class Example(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 400, 400)
self.pte = QPlainTextEdit(self)
self.pte.setGeometry(0, 0, 350, 300)
self.btn = QPushButton('按钮',self)
self.btn.setGeometry(300, 350, 70 ,30)
self.btn.clicked.connect(self.on_btn_clicked)
self.cnt = 0
def on_btn_clicked(self):
self.pte.moveCursor(QTextCursor.End)
precursor = self.pte.textCursor()
print('pre'+str(precursor.position()))
pos = precursor.position()
self.cnt = self.cnt + 1
self.pte.appendPlainText(str(self.cnt) + ' ')
print(self.pte.toPlainText())
print('pre'+str(precursor.position()))
if pos == 0:
return
precursor.setPosition(pos)
self.pte.setTextCursor(precursor)
self.pte.textCursor().deleteChar()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Example()
win.show()
sys.exit(app.exec_())
注意点:
1、当QPlainTextEdit内容为空时,appendplaintext不自动添加换行