python - 如何使用 PyQt5 将 listWidget 的项目保存到文件(列表文件)
问题描述
我想将 QListWidget 的项目保存到文件中。我添加的代码完成了工作,但我希望保存的文件是列表格式,即 ['itemm1'、'item2'、'item3' 等]
class MyMainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.save_file = 'save_file.txt'
self.read_from_file(self.save_file)
def write_to_file(self, file):
try:
list_widget = self.ui.listWidget
entries = '\n'.join(list_widget.item(ii).text() for ii in range(list_widget.count()))
with open(file, 'w') as fout:
fout.write(entries)
except OSError as err:
print(f"file {file} could not be written")
def read_from_file(self, file):
try:
list_widget = self.ui.listWidget
with open(file, 'r') as fin:
entries = [e.strip() for e in fin.readlines()]
list_widget.insertItems(0, entries)
except OSError as err:
with open(file, 'w'):
pass
def closeEvent(self, event):
should_save = QtWidgets.QMessageBox.question(self, "Save data",
"Should the data be saved?",
defaultButton = QtWidgets.QMessageBox.Yes)
if should_save == QtWidgets.QMessageBox.Yes:
self.write_to_file(self.save_file)
return super().closeEvent(event)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = MyMainWindow()
MainWindow.show()
sys.exit(app.exec_())
解决方案
推荐阅读
- firebase - 等待Future的结果
在 Flutter Firestore 中 - go - 如果并发进程向全局变量写入相同的值会发生什么?
- c# - Xamarin IOS Navcontroller 异常
- unit-testing - Kotlin 多平台项目在 IDEA 中运行通用模块测试
- python - 为什么我在以下代码中使用的相同魔术方法生成的输出与预期的不同
- java - Android - 是否有任何功能或方法可以在 HTML Webview 文本中搜索特定文本
- java - 遍历多维 ArrayList
- reactjs - React - 在呈现 ajax 返回的数据后调用 javascript 函数
- algorithm - BFS(广度优先搜索算法)中的优先顺序
- python - 读取文本文件并创建 Python 字典