{"id":16709679,"url":"https://github.com/yjg30737/pyqt-editable-list-widget","last_synced_at":"2026-05-12T16:02:57.227Z","repository":{"id":57679214,"uuid":"429998265","full_name":"yjg30737/pyqt-editable-list-widget","owner":"yjg30737","description":"Easily editable list widget","archived":false,"fork":false,"pushed_at":"2022-05-13T22:13:02.000Z","size":480,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T18:50:32.335Z","etag":null,"topics":["gui","py37","pyqt-examples","pyqt-list-widget","pyqt-tutorial","pyqt5","pyqt5-examples","pyqt5-list-widget","pyqt5-tutorial","python","python3","qlistwidget","qt","widget"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yjg30737.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-20T03:28:27.000Z","updated_at":"2023-02-14T20:39:31.000Z","dependencies_parsed_at":"2022-09-04T02:11:01.836Z","dependency_job_id":null,"html_url":"https://github.com/yjg30737/pyqt-editable-list-widget","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjg30737%2Fpyqt-editable-list-widget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjg30737%2Fpyqt-editable-list-widget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjg30737%2Fpyqt-editable-list-widget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjg30737%2Fpyqt-editable-list-widget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yjg30737","download_url":"https://codeload.github.com/yjg30737/pyqt-editable-list-widget/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243672370,"owners_count":20328762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","py37","pyqt-examples","pyqt-list-widget","pyqt-tutorial","pyqt5","pyqt5-examples","pyqt5-list-widget","pyqt5-tutorial","python","python3","qlistwidget","qt","widget"],"created_at":"2024-10-12T20:05:38.007Z","updated_at":"2026-05-12T16:02:52.187Z","avatar_url":"https://github.com/yjg30737.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyqt-editable-list-widget\nEasily editable QListWidget\n\n## General Info\nIn this QListWidget, persistent editor is automatically activated/deactivated when calling the `addItem`.\n\nPersistent editor will be closed if you press enter or up or down key or click somewhere else after editing.\n\nIf you want to add the item consecutively, use `setConsecutiveAddWhenEnterPressed(f: bool)`. You can add a new item again.\n\nYou can edit existing items to double-click it or press F2.\n\nYou have to call `closeIfPersistentEditorStillOpen()` before `addItem`. If you don't, old editor still remain open even though new editor was already opened.\n\n## Requirements\nPyQt5 \u003e= 5.8\n\n## Setup\n`python -m pip install pyqt-editable-list-widget`\n\n## Code Example\n\n```python\nimport sys\n\nfrom PyQt5.QtCore import Qt\nfrom PyQt5.QtGui import QIcon\nfrom PyQt5.QtWidgets import QPushButton, QApplication, QCheckBox, QDialog,\n\nQVBoxLayout, QListWidgetItem, QWidget, QHBoxLayout, QLabel\nfrom pyqt_editable_list_widget import EditableListWidget\n\n\nclass Dialog(QDialog):\n    def __init__(self):\n        super().__init__()\n        self.__initUi()\n\n    def __initUi(self):\n        # topWidget start\n        lbl = QLabel('Files')\n        lay = QHBoxLayout()\n        lay.setAlignment(Qt.AlignLeft)\n        lay.addWidget(lbl)\n        lay.setContentsMargins(0, 0, 0, 0)\n\n        topWidget = QWidget()\n        topWidget.setLayout(lay)\n        # topWidget end\n\n        # middleWidget start\n        allChkBox = QCheckBox('Check All')\n\n        left_lay = QHBoxLayout()\n        left_lay.setAlignment(Qt.AlignLeft)\n        left_lay.addWidget(allChkBox)\n        left_lay.setContentsMargins(0, 0, 0, 0)\n\n        btn_style = '''\n        QPushButton \n        {\n        border:0; \n        background:transparent;\n        padding:1px;\n        }\n        QPushButton:hover\n        {\n        background-color:#DDDDDD;\n        border-radius: 2px;\n        }\n        QPushButton:pressed\n        {\n        background-color:#FFFFFF;\n        border-radius: 2px;\n        }\n        QPushButton:checked\n        {\n        background-color: rgb(210, 210, 210);\n        border-radius: 2px;\n        border: none;\n        }\n        '''\n\n        addBtn = QPushButton()\n        addBtn.clicked.connect(self.__add)\n        addBtn.setStyleSheet(btn_style)\n        addBtn.setIcon(QIcon('./ico/add.png'))\n        addBtn.setToolTip('Add')\n\n        delBtn = QPushButton()\n        delBtn.clicked.connect(self.__delete)\n        delBtn.setStyleSheet(btn_style)\n        delBtn.setIcon(QIcon('./ico/delete.png'))\n        delBtn.setToolTip('Delete')\n\n        right_lay = QHBoxLayout()\n        right_lay.setAlignment(Qt.AlignRight)\n        right_lay.addWidget(addBtn)\n        right_lay.addWidget(delBtn)\n        right_lay.setContentsMargins(0, 0, 0, 0)\n\n        lay = QHBoxLayout()\n        lay.addLayout(left_lay)\n        lay.addLayout(right_lay)\n        lay.setContentsMargins(0, 0, 0, 0)\n\n        middleWidget = QWidget()\n        middleWidget.setLayout(lay)\n        # middleWidget end\n\n        # bottomWidget\n        self.__bottomWidget = EditableListWidget()\n\n        # mainWidget start\n        lay = QVBoxLayout()\n        lay.addWidget(topWidget)\n        lay.addWidget(middleWidget)\n        lay.addWidget(self.__bottomWidget)\n        lay.setContentsMargins(0, 0, 0, 0)\n\n        mainWidget = QWidget()\n        mainWidget.setLayout(lay)\n\n        lay = mainWidget.layout()\n        lay.setContentsMargins(5, 5, 5, 5)\n\n        self.setLayout(lay)\n        # mainWidget end\n\n    def __add(self):\n        self.__bottomWidget.closeIfPersistentEditorStillOpen()  # You have to call this.\n        item = QListWidgetItem('abc')\n        self.__bottomWidget.addItem(item)\n\n    def __delete(self):\n        item = self.__bottomWidget.currentItem()\n        if item:\n            self.__bottomWidget.takeItem(self.__bottomWidget.currentRow())\n\n\nif __name__ == \"__main__\":\n    app = QApplication(sys.argv)\n    dialog = Dialog()\n    dialog.show()\n    sys.exit(app.exec_())\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyjg30737%2Fpyqt-editable-list-widget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyjg30737%2Fpyqt-editable-list-widget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyjg30737%2Fpyqt-editable-list-widget/lists"}