python中appendtext换行_神秘的换行符被添加到QPlainTextEdit的末尾

我正在使用Python 2.7和PyQt5制作一种命令行模拟器,它的工作方式是你键入的每个字符都会监听密钥。按下它时会调用self.parse()来完成任务。

当我加载窗口时它工作正常,光标放在提示符后面(C:\>)。当我输入一个命令,然后按回车键时,会打印这些内容,并打印一个新提示。然后打印换行符,并将光标放在该换行符之后。

我不想要这个。我该如何解决?

我尝试了很多不同的东西。我试过了plainTextEdit.textCursor().deletePreviousChar()。我尝试过使用insertPlainText以及appendPlainText。在每种情况下都会发生同样的事情。这真的令人沮丧。

更令人沮丧的部分是我不知道在我的代码中添加换行符的位置。它可能不在parse中,否则deletePreviousChar会起作用。而且我想不出它会在哪里......

这是我的班级:

class CmdLine(QtWidgets.QMainWindow):

def __init__(self):

QtWidgets.QMainWindow.__init__(self)

self.ui = uic.loadUi('cmd.ui', self)

self.ui.show()

self.plainTextEdit.appendPlainText("C:\\> ")

self.plainTextEdit.installEventFilter(self)

self.editable = True

self.keys = []

self.lolnope = []

def eventFilter(self, widget, event):

if event.type() == QtCore.QEvent.KeyPress:

print event.text()

if self.editable:

if event.key() == QtCore.Qt.Key_Return:

self.parse()

else:

self.keys += event.text()

return QtWidgets.QMainWindow.eventFilter(self, widget, event)

else:

self.lolnope += event.text()

return True

else:

return QtWidgets.QMainWindow.eventFilter(self, widget, event)

def parse(self):

self.editable = False

self.plainTextEdit.moveCursor(QtGui.QTextCursor.End)

s = ''.join(self.keys)

# parse input and do things

self.keys = []

self.editable = True

self.plainTextEdit.moveCursor(QtGui.QTextCursor.End)

self.plainTextEdit.appendPlainText("C:\\> ")

self.plainTextEdit.textCursor().deletePreviousChar();

def __del__(self):

with open('lolnope.txt', 'w') as f:

f.write(''.join(self.lolnope))

有人可以帮忙吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值