如何在python PYQt4中保存几个QtextEdits的文本?

艾哈迈迪(Ahmedhany)

当我是python PyQt初学者时,能否请您帮助我解决问题...我已经使用python PyQt4创建了一个简单的应用程序,用于简单的数学计算,并在textEdit2和textEdit3中生成了结果,当我单击“计算”时,一切都很好按钮,值出现在上面的textedits中...我想要的是将结果保存在相同的文本编辑中,以便下次我打开应用程序并打开数据文件时,我发现所有内容都在适当的位置。我创建了save和open操作...但是将所有结果保存在同一文本编辑中。

我将附加我的代码以及需要保存结果的主窗口以及保存并打开应用程序并将所有结果合并为一个文本后的另一张照片

enter code here
import sys  
from PyQt4 import QtCore, QtGui, uic   
import os   #os used to interface with windows  
import datetime as dt
import pickle
qtCreatorFile = "save.ui" # Enter ui file here

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)   

class MyApp(QtGui.QMainWindow, Ui_MainWindow):  
    def __init__(self):                         

        super (MyApp,self).__init__()       
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.initUI()
        self.calc.clicked.connect(self.Bss)

    def Bss (self):
        x = float(self.textEdit.toPlainText())     
        y = float(self.textEdit1.toPlainText())
        z= x+y
        w= x**2

        z_string = str(z)         #convert z value to a string then add this  string to textEdit and set as Text
        self.textEdit2.setText(z_string)
        w_string = str(w)
        self.textEdit3.setText(w_string)

    def initUI(self):           #QAction class insert New,action save in the main menue bar
        newAction = QtGui.QAction('New', self)  
        newAction.setShortcut('Ctrl+N')
        newAction.setStatusTip('Create new file')
        newAction.triggered.connect(self.newFile)  
        saveAction = QtGui.QAction('Save as', self)
        saveAction.setShortcut('Ctrl+S')
        saveAction.setStatusTip('Save current file')
        saveAction.triggered.connect(self.saveFile)
        openAction = QtGui.QAction('Open', self)
        openAction.setShortcut('Ctrl+O')
        openAction.setStatusTip('Open a file')
        openAction.triggered.connect(self.openFile)
        closeAction = QtGui.QAction('Close', self)
        closeAction.setShortcut('Ctrl+Q')
        closeAction.setStatusTip('Close Notepad')
        closeAction.triggered.connect(self.close)
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(newAction)
        fileMenu.addAction(saveAction)
        fileMenu.addAction(openAction)
        fileMenu.addAction(closeAction)
        self.show()
        self.statusBar()

    def newFile(self): #create a new function and remove all values in the QTEXTedit
        self.textEdit.clear()
        self.textEdit1.clear()
        self.textEdit2.clear()
        self.textEdit3.clear()                

    def openFile(self):
        self.text = QtGui.QTextEdit(self)
        filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
        f = open(filename, 'r')
        filedata = f.read()
        self.textEdit1.setText(filedata)
        self.textEdit2.setText(filedata)
        self.textEdit3.setText(filedata)
        f.close()
        self.show()

    def saveFile(self):   # saving argument values in a filedata
        self.text = QtGui.QTextEdit(self)
        filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME'))
        f = open(filename, 'w')
        filedata = self.textEdit1.toPlainText()
        f.write(filedata)
        filedata = self.textEdit2.toPlainText()
        f.write(filedata)
        filedata = self.textEdit3.toPlainText()
        f.write(filedata)
        f.close()

    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(self, 'Message',
        "Are you sure to quit?", QtGui.QMessageBox.Yes | 
        QtGui.QMessageBox.No, QtGui.QMessageBox.No)

        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())
索海尔

如果我正确理解了您的问题,因为您是按顺序将textEdit值写入文件,则在打开文件时需要逐行读取该值,而不是使用read()方法读取整个文件的内容所以openFile()方法应该是这样的:

def openFile(self):
    self.text = QtGui.QTextEdit(self)
    filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
    count = 0
    with open(filename,'r') as f:
        for line in f:
            count = count + 1
            if count == 1 : self.textEdit1.setText(line)
            elif count == 2 : self.textEdit2.setText(line)
            elif count == 3 : self.textEdit3.setText(line)
            else: break
    self.show()

希望能帮助到你!

更新:

还要更改saveFile()方法,如下所示:

def saveFile(self):   # saving argument values in a filedata
    self.text = QtGui.QTextEdit(self)
    filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME'))
    f = open(filename, 'w')
    filedata = self.textEdit1.toPlainText()
    filedata = str(filedata)+"\n"
    f.write(filedata)
    filedata = self.textEdit2.toPlainText()
    filedata = str(filedata)+"\n"
    f.write(filedata)
    filedata = self.textEdit3.toPlainText()
    filedata = str(filedata)+"\n"
    f.write(filedata)
    f.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用InternalId在PyQt4的QTreeView中获取文本

来自分类Dev

如何在python中从pyqt4升级到pyqt5

来自分类Dev

如何在Python PyQt4中设置现有MainWidnow的中央小部件?

来自分类Dev

如何在Anaconda中安装PyQt4?

来自分类Dev

如何在PyQt4中旋转圆形鼠标

来自分类Dev

如何在kivy python中保存用户输入的文本?

来自分类Dev

在 PyQt4 (python) 中单击按钮时如何将文本字符串显示为标签?

来自分类Dev

如何在PyQt4中使用QtGui将输入变量收集到python程序中?

来自分类Dev

如何在Python中的文件中保存两列数组

来自分类Dev

如何在 Python 中保存元组对象中的数据?

来自分类Dev

如何在Lambda,Python中保存索引

来自分类Dev

如何在python(pandas)中保存数据

来自分类Dev

如何在python中保存列表?

来自分类Dev

如何在python中保存ping输出

来自分类Dev

如何让 QTextEdit 自动在 PyQt5 中保存文本?

来自分类Dev

PyQt:如何在PyQt4中的QGroupBox内添加网格布局

来自分类Dev

如何在MVC4中保存文件?

来自分类Dev

如何在Laravel 4中保存用户日志?

来自分类Dev

如何在面板中保存几个图片框?

来自分类Dev

如何在PyQt4中调整QMenuBar的大小以显示4K

来自分类Dev

如何将 PyQt4 中的选项卡添加到我的文本编辑器?

来自分类Dev

如何在窗口的PyQt4中的不同画布中绘制不同的图?

来自分类Dev

如何在pyqt4中正确创建第二个窗口

来自分类Dev

如何在PyQt4中通过滚动显示RGBA numpy数组图像?

来自分类Dev

如何在PyQt4的QTextEdit中更改所有字体的大小?

来自分类Dev

如何在PyQt4中为QListView获取selectionchange事件

来自分类Dev

如何在PyQt4的NxN网格布局中插入QImage?

来自分类Dev

如何在PyQt4中杀死QtCore.QTimer一枪?

来自分类Dev

如何在启动画面pyqt4中添加进度栏

Related 相关文章

  1. 1

    如何使用InternalId在PyQt4的QTreeView中获取文本

  2. 2

    如何在python中从pyqt4升级到pyqt5

  3. 3

    如何在Python PyQt4中设置现有MainWidnow的中央小部件?

  4. 4

    如何在Anaconda中安装PyQt4?

  5. 5

    如何在PyQt4中旋转圆形鼠标

  6. 6

    如何在kivy python中保存用户输入的文本?

  7. 7

    在 PyQt4 (python) 中单击按钮时如何将文本字符串显示为标签?

  8. 8

    如何在PyQt4中使用QtGui将输入变量收集到python程序中?

  9. 9

    如何在Python中的文件中保存两列数组

  10. 10

    如何在 Python 中保存元组对象中的数据?

  11. 11

    如何在Lambda,Python中保存索引

  12. 12

    如何在python(pandas)中保存数据

  13. 13

    如何在python中保存列表?

  14. 14

    如何在python中保存ping输出

  15. 15

    如何让 QTextEdit 自动在 PyQt5 中保存文本?

  16. 16

    PyQt:如何在PyQt4中的QGroupBox内添加网格布局

  17. 17

    如何在MVC4中保存文件?

  18. 18

    如何在Laravel 4中保存用户日志?

  19. 19

    如何在面板中保存几个图片框?

  20. 20

    如何在PyQt4中调整QMenuBar的大小以显示4K

  21. 21

    如何将 PyQt4 中的选项卡添加到我的文本编辑器?

  22. 22

    如何在窗口的PyQt4中的不同画布中绘制不同的图?

  23. 23

    如何在pyqt4中正确创建第二个窗口

  24. 24

    如何在PyQt4中通过滚动显示RGBA numpy数组图像?

  25. 25

    如何在PyQt4的QTextEdit中更改所有字体的大小?

  26. 26

    如何在PyQt4中为QListView获取selectionchange事件

  27. 27

    如何在PyQt4的NxN网格布局中插入QImage?

  28. 28

    如何在PyQt4中杀死QtCore.QTimer一枪?

  29. 29

    如何在启动画面pyqt4中添加进度栏

热门标签

归档