微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 PyQt5 将 listWidget 的项目保存到文件列表文件

如何解决如何使用 PyQt5 将 listWidget 的项目保存到文件列表文件

我想将 QListWidget 的项目保存到文件中。我添加代码完成了工作,但我希望保存的文件是列表格式,即 ['item1'、'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_())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。