it-swarm.com.de

Wie kann man QTextedit in Python lesen?

Ich habe die grafische Benutzeroberfläche mit QTDesigner erstellt und die Datei als .ui-Erweiterung gespeichert. Dann konvertieren Sie die Datei in die .py-Datei mit dem folgenden Code 

pyuic4 -x test.ui -o test.py 

Nun möchte ich meinen Projektcode in diese Datei test.py integrieren. Da ich neu bei pyqt4 bin, weiß ich nicht, wie man Text aus der Textbearbeitung liest und in eine Datei und umgekehrt speichert. Folgendes ist mein 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 __== "__main__":
  import sys
  app = QtGui.QApplication(sys.argv)
  AnaphoraResolution = QtGui.QDialog()
  ui = Ui_AnaphoraResolution()
  ui.setupUi(AnaphoraResolution)
  AnaphoraResolution.show()
  sys.exit(app.exec_())  

Wenn ich auf die Eingabetaste (Push-Taste) klicke, wird die Eingabe in der textEdit-Datei gelesen und in einer Datei mit dem Namen input.txt gespeichert. Wenn ich auf quit (Drucktaste) klicke, wird die Ausgabe in der Datei outfile.txt gelesen und in textEdit_2 geschrieben. Wie löse ich das?

11
user3251664

Wenn Sie nur den angezeigten Text in Ihrem QTextEdit-Widget benötigen, können Sie darauf zugreifen, indem Sie die toPlainText() -Methode des Widget verwenden, von dem Sie den Text benötigen.

Beispiel: 

mytext = self.textEdit.toPlainText()

An diesem Punkt können Sie mit mytext machen, was Sie möchten. Sie können es in eine Datei schreiben, bearbeiten, usw.

Wenn Sie Ihre QTextEdit (erneut) mit dem geänderten Wert von mytext auffüllen möchten, können Sie dies tun, indem Sie setPlainText verwenden.

self.textEdit.setPlainText(mytext)

Um den String in eine Datei zu schreiben, gehen Sie folgendermaßen vor:

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

Dies wird mytext an somefile.txt anhängen.

26
Andy

Zusammen mit der Antwort oben. Ändern Sie nicht das tatsächliche .py, das konvertiert wird, wenn Sie pyuic4 verwenden. Sie möchten eine Klasse in das Setup integrieren, damit Sie die Benutzeroberfläche ändern können, ohne das gesamte Geschriebene zu löschen. Beispiel 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)

Auf diese Weise sollten Sie die konvertierten UI-Dateien verwenden. Dadurch können Sie die Datei erneut bearbeiten, und Sie verlieren nicht die gesamte Arbeit, die Sie in die UI-Kontrollstruktur investiert haben. Außerdem können Sie dieselbe Ui für mehrere Zwecke verwenden, da Sie sie als Vorlage verwenden und die Funktion der Schaltflächen in einer anderen Datei ändern. Hoffe das hilft.

0
Jarith