python - 如何保存各个值并重新打开它们以供以后使用?

标签 python pyqt pyqt5 qt-designer

我创建了一个应用程序,只需将两个值相加即可。我的目标是将这两个值保存到一个文件中,以便稍后可以重新插入它们。现在我只能让它保存一个值,我也可以重新打开保存它的文件并将该值插入回去。

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QPushButton


class MyWindow(QtWidgets.QMainWindow, QPushButton):
    def __init__(self):
        super(MyWindow, self).__init__()
        uic.loadUi('File_Stuff.ui', self)
        self.setWindowTitle("File Stuff")
        self.Add.clicked.connect(self.Math)

        openFile = QtWidgets.QAction("&Open File", self)
        openFile.setShortcut("Ctrl+O")
        openFile.triggered.connect(self.file_open)

        saveFile = QtWidgets.QAction("&Save File", self)
        saveFile.setShortcut("Ctrl+S")
        saveFile.triggered.connect(self.file_save)

        mainMenu = self.menuBar()
        fileMenu = mainMenu.addMenu('&File')
        fileMenu.addAction(openFile)
        fileMenu.addAction(saveFile)


    def Math(self):
        a = self.LE1.text()
        b = self.LE2.text()
        answer = float(a) + float(b)
        answer2 = str(answer)
        self.TE.setText(answer2)

    def file_open(self):
        name = QtWidgets.QFileDialog.getOpenFileName(self, 'Select File')
        file = open(name[0], 'r')

        with file:
            text = file.read()
            self.LE1.setText(text)
 # if I put self.LE2.setText(text), it inserts both values into both Line Edits

    def file_save(self):
        name = QtWidgets.QFileDialog.getSaveFileName(self, 'Select File')
        file = open(name[0], 'w')
        text = self.LE1.text()
        file.write(text)
        file.close()
 # if I put text2 = self.LE2.text() and file.write(text2), it saves them together

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

当我重新打开保存这两个值的文件时,我无法分别调用这两个值。

最佳答案

尝试一下:

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QPushButton, QWidget, QLineEdit, QTextEdit, QGridLayout 


class MyWindow(QtWidgets.QMainWindow, QPushButton):
    def __init__(self):
        super(MyWindow, self).__init__()

#        uic.loadUi('File_Stuff.ui', self)
        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)
        self.Add = QPushButton("Add")
        self.LE1 = QLineEdit()
        self.LE2 = QLineEdit() 
        self.TE  = QTextEdit()


        self.setWindowTitle("File Stuff")
        self.Add.clicked.connect(self.Math)

        openFile = QtWidgets.QAction("&Open File", self)
        openFile.setShortcut("Ctrl+O")
        openFile.triggered.connect(self.file_open)

        saveFile = QtWidgets.QAction("&Save File", self)
        saveFile.setShortcut("Ctrl+S")
        saveFile.triggered.connect(self.file_save)

        mainMenu = self.menuBar()
        fileMenu = mainMenu.addMenu('&File')
        fileMenu.addAction(openFile)
        fileMenu.addAction(saveFile)

        layout = QGridLayout(centralWidget)
        layout.addWidget(self.LE1)
        layout.addWidget(self.LE2)
        layout.addWidget(self.TE)
        layout.addWidget(self.Add)

    def Math(self):
        a = self.LE1.text()
        b = self.LE2.text()
        answer = float(a) + float(b)
        answer2 = str(answer)
        self.TE.setText(answer2)

    def file_open(self):
        name = QtWidgets.QFileDialog.getOpenFileName(self, 'Select File')
        file = open(name[0], 'r')

        with file:
#            text = file.read()
            myList = file.read().split()                                         # <---
            self.LE1.setText(myList[0])                                          # <---
            self.LE2.setText(myList[1])                                          # <---

 # if I put self.LE2.setText(text), it inserts both values into both Line Edits

    def file_save(self):
        name = QtWidgets.QFileDialog.getSaveFileName(self, 'Select File')
        file = open(name[0], 'w')

        text = "{}\n{}".format(self.LE1.text(), self.LE2.text())                   # <---

        file.write(text)
        file.close()
 # if I put text2 = self.LE2.text() and file.write(text2), it saves them together

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

关于python - 如何保存各个值并重新打开它们以供以后使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56840960/

相关文章:

python - 在qtablewidget中突出显示搜索结果(选择并突出显示该文本或字符而不是所有行或列)

python - 重新加载时`QPixmap`和`QLabel`大小略有增加

python - 远程触发不同网络上的计算机

python - 从 "Today"或 "Yesterday"开始计时和在 Python 中计时的最佳方法是什么?

python - QGraphicsView 在像素图缩放后不会调整大小,而像素图不再居中

python - PyQt 打开另一个窗口

python - 属性错误: 'QScatterSeries' object has no attribute 'points'

python - For 循环在另一个数据框中查找行

python - 如何在 tensorflow RNN 中使用 numpy 数组输入

python - 使用 Qt Designer 表单和 PyQt5 在 QWidget 中绘制 matplotlib 图