簡體   English   中英

如何在 python 中讀取 QTextedit?

[英]How to read from QTextedit in python?

我使用 QTDesigner 創建了 GUI,並將文件保存為 .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_())  

當我單擊輸入(按鈕)時,會讀取 textEdit 中的輸入並將其保存到名為 input.txt 的文件中。 當我單擊退出(按鈕)時,將讀取 outfile.txt 中的輸出並將其寫入 textEdit_2 。 如何解決這個問題?

如果您需要的只是QTextEdit小部件中顯示的文本,則可以通過在小部件上使用toPlainText()方法來訪問該文本。

例:

mytext = self.textEdit.toPlainText()

此時,你可以用mytext做任何你想做的事。 你可以把它寫到一個文件,你可以操縱它,等等。

如果您需要(重新)填充您QTextEdit與修改后的值mytext ,你可以通過使用setPlainText

self.textEdit.setPlainText(mytext)

要將字符串寫入文件,您將執行以下操作:

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

這會將mytext附加到somefile.txt

隨着上面的答案。 不要修改使用pyuic4時轉換的實際.py。 您希望合並一個類來處理設置,以便您可以修改UI而不刪除您編寫的所有內容。 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文件,這樣你就可以重新編輯文件了,你不會失去你放入Ui控制結構的所有工作。 它還允許您將相同的UI用於多種用途,因為您將其用作模板並更改按鈕在不同文件中的操作。 希望這可以幫助。

mytext = self.textEdit.toPlainText()

上面的代碼不起作用

嘗試以下代碼:

mytext = self.textEdit.text()

並更改 textedit 中的文本:

self.textEdit.setText("some text")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM