如何在Python中读取QTextEdit内容?

31 投票
3 回答
105234 浏览
提问于 2025-04-18 08:33

我用QTDesigner创建了一个图形界面,并把文件保存为.ui格式。然后我用下面的代码把这个文件转换成.py文件。

pyuic4 -x test.ui -o test.py 

现在我想把我的项目代码整合到这个test.py文件里。因为我对pyqt4还不太熟悉,所以我不知道怎么从文本编辑框中读取文本并保存到文件里,反过来也不知道怎么做。以下是我的代码。

from PyQt4 import QtCore, QtGui  
from final_ar_gui import *

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_AnaphoraResolution(object):  

  def setupUi(self, AnaphoraResolution):
    AnaphoraResolution.setObjectName(_fromUtf8("AnaphoraResolution"))
    AnaphoraResolution.resize(608, 620)
    self.textEdit = QtGui.QTextEdit(AnaphoraResolution)
    self.textEdit.setGeometry(QtCore.QRect(0, 110, 271, 341))
    self.textEdit.setObjectName(_fromUtf8("textEdit"))
    self.textEdit_2 = QtGui.QTextEdit(AnaphoraResolution)
    self.textEdit_2.setGeometry(QtCore.QRect(310, 110, 271, 341))
    self.textEdit_2.setObjectName(_fromUtf8("textEdit_2"))
    self.pushButton = QtGui.QPushButton(AnaphoraResolution)
    self.pushButton.setGeometry(QtCore.QRect(40, 470, 91, 27))
    self.pushButton.setObjectName(_fromUtf8("pushButton"))
    self.pushButton_2 = QtGui.QPushButton(AnaphoraResolution)
    self.pushButton_2.setGeometry(QtCore.QRect(170, 470, 171, 27))
    self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
    self.pushButton_3 = QtGui.QPushButton(AnaphoraResolution)
    self.pushButton_3.setGeometry(QtCore.QRect(370, 470, 81, 27))
    self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
    self.pushButton_4 = QtGui.QPushButton(AnaphoraResolution)
    self.pushButton_4.setGeometry(QtCore.QRect(480, 470, 98, 27))
    self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))
    self.label = QtGui.QLabel(AnaphoraResolution)
    self.label.setGeometry(QtCore.QRect(180, 30, 241, 20))
    self.label.setObjectName(_fromUtf8("label"))

    self.retranslateUi(AnaphoraResolution)
    self.connectActions()
    QtCore.QMetaObject.connectSlotsByName(AnaphoraResolution)

 def retranslateUi(self, AnaphoraResolution):
    AnaphoraResolution.setWindowTitle(QtGui.QApplication.translate("AnaphoraResolution", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
    self.pushButton.setText(QtGui.QApplication.translate("AnaphoraResolution", "Enter", None, QtGui.QApplication.UnicodeUTF8))
    self.pushButton_2.setText(QtGui.QApplication.translate("AnaphoraResolution", "Pronominal Resolution", None, QtGui.QApplication.UnicodeUTF8))
    self.pushButton_3.setText(QtGui.QApplication.translate("AnaphoraResolution", "Clear", None, QtGui.QApplication.UnicodeUTF8))
    self.pushButton_4.setText(QtGui.QApplication.translate("AnaphoraResolution", "Quit", None, QtGui.QApplication.UnicodeUTF8))
    self.label.setText(QtGui.QApplication.translate("AnaphoraResolution", "Anaphora Resolution in Malayalam", None, QtGui.QApplication.UnicodeUTF8))

 def connectActions(self):

    self.pushButton.clicked.connect(self.ent)
 def ent(self):

    %Dont know what code to write


if __name__ == "__main__":
  import sys
  app = QtGui.QApplication(sys.argv)
  AnaphoraResolution = QtGui.QDialog()
  ui = Ui_AnaphoraResolution()
  ui.setupUi(AnaphoraResolution)
  AnaphoraResolution.show()
  sys.exit(app.exec_())  

当我点击“确定”按钮时,文本编辑框中的输入会被读取并保存到一个叫做input.txt的文件里。当我点击“退出”按钮时,outfile.txt中的内容会被读取并写入到textEdit_2中。我该怎么解决这个问题呢?

3 个回答

0

要逐行读取每个值,你可以这样做。这会生成一个包含每个值的列表。

self.ui.textEdit.toPlainText().split("\n")
5

除了上面提到的答案,使用pyuic4转换时,不要直接修改生成的.py文件。你应该创建一个类来处理设置,这样你就可以在不删除之前写的内容的情况下修改用户界面。下面是一个在pyqt5中的例子:

from MyConvertedUiFile import Ui_SomeName

class MyWorkingCode(QtWidgets.QMainWindow, Ui_SomeName):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.ent)

    def ent(self):
        mytext = self.textEdit.toPlainText()
        with open('somefile.txt', 'a') as f:
            f.write(mytext)

这样使用转换后的Ui文件,可以让你重新编辑这个文件,而不会丢失你在用户界面控制结构上所做的所有工作。这样做还可以让你在多个场合使用同一个用户界面,因为你可以把它当作模板,在其他文件中改变按钮的功能。希望这对你有帮助。

51

如果你只需要获取你在QTextEdit小部件中显示的文本,可以通过使用这个小部件的toPlainText()方法来获取。

举个例子:

mytext = self.textEdit.toPlainText()

到这里,你可以对mytext做任何你想做的事情。比如,你可以把它写入一个文件,或者对它进行处理等等。

如果你需要把修改后的mytext重新填充回你的QTextEdit中,可以使用setPlainText方法来实现。

self.textEdit.setPlainText(mytext)

要把这个字符串写入一个文件,你可以这样做:

with open('somefile.txt', 'a') as f:
    f.write(mytext)

这样会把mytext追加到somefile.txt文件中。

撰写回答