user3251664
user3251664

Reputation: 441

How to read from QTextedit in python?

I created the GUI using QTDesigner and save the file as .ui extension. Then convert the file to .py file using the following code

pyuic4 -x test.ui -o test.py 

Now I want to integrate my project code to this test.py file. Since I am new to pyqt4, I dont know how to read text from text edit and save to file and viceversa. Following is my code.

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_())  

When i click enter (push button) the input in the textEdit is read and save into a file named input.txt. When i click quit (pushbutton) the output in the outfile.txt is read and write into textEdit_2 . How to solve this ?

Upvotes: 31

Views: 109554

Answers (3)

jack chyna
jack chyna

Reputation: 103

to read each value line by line you can do this. this will create a list of each value

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

Upvotes: 0

Jarith
Jarith

Reputation: 61

Along with the answer posted above. Don't modify the actual .py that is converted when you use pyuic4. You want to incorporate a class to handle the setup so that you can modify the UI without erasing everything that you have written. Example in 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)

This should be how you utilize the converted Ui files it will make it so you can re edit the file and you wont loose all of the work you have put into the Ui control structure. It will also allow you to use the same Ui for multiple purposes as you are using it as a template and changing what the buttons do in a different file. Hope this helps.

Upvotes: 6

Andy
Andy

Reputation: 50560

If all you need is the displayed text in your QTextEdit widget, you can access that by using the toPlainText() method on the widget you need the text from.

Example:

mytext = self.textEdit.toPlainText()

At this point, you can do whatever you want with mytext. You can write it to a file, you can manipulated it, etc.

If you need to (re)populate your QTextEdit with the modified value of mytext, you can do that by using setPlainText

self.textEdit.setPlainText(mytext)

To write the string to a file, you'll do something like this:

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

This will append mytext to somefile.txt

Upvotes: 53

Related Questions