【问题标题】:How to generate text in a new line in text edit? [duplicate]如何在文本编辑中在新行中生成文本? [复制]
【发布时间】:2022-02-19 02:21:23
【问题描述】:

我正在 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)

【问题讨论】:

  • 你可以只读取该区域的当前值,附加新文本,然后将其写回吗?
  • 只使用append方法

标签: python pyqt5


【解决方案1】:

使用insertPlainText 方法将文本添加到QTextEdit。在要添加的字符串前面添加换行符 (\n)。

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

为了保留光标的当前位置,在添加文本之前/之后保存和恢复光标位置,使用 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      相关资源
      最近更新 更多