首页 > 解决方案 > 如何使用 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_())

标签: pythonpyqt5qlistwidget

解决方案


推荐阅读