>

라인 편집의 값을 파일로 저장하여 나중에 해당 파일을 다시 열어서 값을 다시 가져올 수 있습니다. 그러나 색인 문제가 있습니다.

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

class MyWindow(QtWidgets.QMainWindow, QPushButton):
    def __init__(self):
        super(MyWindow, self).__init__()
        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)
        self.Add = QPushButton("Add")
        self.LE1 = QLineEdit()
        self.LE2 = QLineEdit()
        self.LE3 = 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.LE3)
        layout.addWidget(self.TE)
        layout.addWidget(self.Add)
    def Math(self):
        a = self.LE1.text()
        b = self.LE2.text()
        c = self.LE3.text()
        answer = float(a) + float(b) + float(c)
        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:
            myList = file.read().split()
            self.LE1.setText(myList[0])
            self.LE2.setText(myList[1])
            self.LE3.setText(myList[2])
    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(), self.LE3.text())
        file.write(text)
        file.close()

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

내 방법은 최대 두 개의 값에 대해서만 작동하며 값을 잘 저장하지만 열린 함수를 사용할 때 다시 삽입하지 않습니다. 세 개 이상을 원하면 어떻게합니까?

  • 답변 # 1

    이 라인에 오류가 있습니다 :

    text = "{}\n{}".format(self.LE1.text(), self.LE2.text(), self.LE3.text())
    
    

    형식이 두 개의 값만 저장하므로 {}은 값을위한 자리 표시 자로 3 개의 값을 출력합니다.이 형식을 유지하려면 다음을 수행해야합니다

    text = "{}\n{}\n{}\n".format(self.LE1.text(), self.LE2.text(), self.LE3.text())
    
    

    하지만 확장하기가 쉽지 않으므로 다음을 수행 할 수 있습니다

    text = ''
    text = text + self.LE1.text() + '\n'
    text = text + self.LE2.text() + '\n'
    text = text + self.LE3.text() + '\n'
    
    

    이 방법으로 동일한 형식을 사용하여 다른 값을 간단히 추가 할 수 있습니다

관련 자료

  • 이전 javascript - json 파일에서 객체 URI (JSON FILE)를 읽는 방법
  • 다음 wordpress - 사용자가 색상 변형을 클릭 할 때 제품을 변경하는 방법 - 우 커머스