如何在文本编辑中在新行中生成文本?

How to generate text in a new line in text edit?

我正在 pyqt5 中创建语音到文本生成器 gui。 该程序从麦克风获取输入并相应地设置文本区域的文本,但每次用户输入时,文本编辑的整个文本都会发生变化。有没有什么方法可以在文本编辑的新行中生成 second 输入。下面是我正在使用的代码。

这是文本编辑部分的编码部分

    self.text_area = QtWidgets.QTextEdit(self.centralwidget)
    self.text_area.setGeometry(QtCore.QRect(10, 240, 621, 171))
    font = QtGui.QFont()
    font.setPointSize(10)
    self.text_area.setFont(font)
    self.text_area.setObjectName("text_area")

这是记录的方法

    def record(self):

    r = sr.Recognizer()
    try:
        with sr.Microphone() as source:

            audio = r.listen(source)
            MyText = r.recognize_google(audio)
            MyText = MyText.lower()
            self.text_area.setText(MyText)

    except Exception as e4:
        print(e4)

您想将新文本添加到现有文本中

allText=self.text_area.toPlainText()+myText
self.text_area.setText(allText)

使用insertPlainText method to add text to the QTextEdit。在要添加的字符串前添加一个换行符(\n)。

值得注意的是,insertPlainText 将文本添加到光标所在的位置。因为可能不在末尾,所以调用moveCursor(QTextCursor.End)将光标移动到末尾。

要保留光标的当前位置,保存并恢复光标位置 before/after 添加文本,使用 textCursorsetTextCursor 方法。

更改这些行:

        with sr.Microphone() as source:

            audio = r.listen(source)
            MyText = r.recognize_google(audio)
            MyText = MyText.lower()
            self.text_area.setText(MyText)

至:

        with sr.Microphone() as source:
            audio = r.listen(source)
            MyText = r.recognize_google(audio)
            MyText = MyText.lower()
            cursor = self.text_area.textCursor()
            self.text_area.moveCursor(QTextCursor.End)
            self.text_area.insertPlainText(f"\n{MyText}")
            self.text_area.setTextCursor(cursor)

不要忘记添加这个导入: from PyQt5.QtGui import QTextCursor