如何从python中的QTextedit读取?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24035660/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to read from QTextedit in python?
提问by user3251664
I created the GUI using QTDesigner and save the file as .ui extension. Then convert the file to .py file using the following code
我使用 QTDesigner 创建了 GUI 并将文件保存为 .ui 扩展名。然后使用以下代码将文件转换为 .py 文件
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.
现在我想将我的项目代码集成到这个 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_())
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 ?
当我点击回车(按钮)时,textEdit 中的输入被读取并保存到一个名为 input.txt 的文件中。当我单击退出(按钮)时, outfile.txt 中的输出被读取并写入 textEdit_2 。如何解决这个问题?
回答by Andy
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.
如果您只需要 QTextEdit 小部件中显示的文本,则可以使用toPlainText()
需要从中获取文本的小部件上的方法来访问它。
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.
此时,您可以对mytext
. 您可以将其写入文件,也可以对其进行操作等。
If you need to (re)populate your QTextEdit
with the modified value of mytext
, you can do that by using setPlainText
如果您需要(重新)填充您QTextEdit
的修改后的值mytext
,您可以使用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
这将附加mytext
到somefile.txt
回答by Jarith
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
连同上面发布的答案。不要修改使用 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)
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.
这应该是您使用转换后的 Ui 文件的方式,它将使您可以重新编辑该文件,并且不会丢失已放入 Ui 控制结构的所有工作。它还允许您将相同的 Ui 用于多种用途,因为您将其用作模板并更改按钮在不同文件中的作用。希望这可以帮助。