python - 如何保存单个值并重新打开它们以供以后使用?
问题描述
我创建了一个简单地将两个值相加的应用程序。我的目标是将这两个值都保存到一个文件中,以便我以后可以重新插入它们。现在我只能让它保存一个值,我也可以重新打开我保存它的文件并将值重新插入。
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 - 在 Python 中计算 Unicode 文本中非间距字符的最快方法
- c - 如何在 J1939 协议中声明地址
- node.js - 节点。SyntaxError:无法解析 JSON 正文:输入意外结束
- angular - ./node_modules/@angular/cdk/esm5/table.es5.js 找不到模块:错误:无法解析 '../../\node_modules\@angular\cdk\esm5' 中的 '@angular/common'
- tinymce - 如何在tinymce的“文本”选项卡中插入b-quote、del、ins、img、更多、关闭标签按钮
- dart - itemcount 中的 snapshot.data.length 不起作用:“在 null 上调用了 getter 'length'”
- javascript - 使用正则表达式匹配用户输入的输入并修剪无效输入以匹配正则表达式
- pandas - scikit learn 的训练-测试拆分导致训练数据中只有一个唯一值的特征
- python - Django 管理界面 - 开发服务器上的权限
- sql-server - 避免使用while循环来检查行“状态变化”