Планирую открывать несколько папок и помещать файлы в QListWidget (поминаю, возможно QTreeView тут предпочтительнее)
В общем, на скорую руку накидал пример
#------------------------------------------------------------------------------- # Name: test label in list # # Created: 11.06.2022 # Copyright: (c) Novator 2022 #------------------------------------------------------------------------------- import sys from PyQt5 import QtWidgets, QtCore class Test(QtWidgets.QWidget): def __init__(self, parent=None): super().__init__(parent) self.lst() self.lst.itemClicked.connect(self.check_item_in_books_list) def lst(self): self.setWindowTitle('Test') self.btn_base_1 = QtWidgets.QPushButton("Btn_1") self.lst = QtWidgets.QListWidget() tops = QtWidgets.QHBoxLayout() tops.addWidget(self.btn_base_1) main_layout = QtWidgets.QVBoxLayout() main_layout.addWidget(self.lst) main_layout.addLayout(tops) self.setLayout(main_layout) @staticmethod def check_item_in_books_list(item): if item.checkState() == QtCore.Qt.Checked: item.setCheckState(QtCore.Qt.Unchecked) else: item.setCheckState(QtCore.Qt.Checked) def fill_lst(self): label = QtWidgets.QLabel('TEST LABEL') grp = QtWidgets.QListWidgetItem() label.setAlignment(QtCore.Qt.AlignCenter) label.setEnabled(False) self.lst.addItem(grp) self.lst.setItemWidget(grp, label) for i in range(10): item = QtWidgets.QListWidgetItem() item.setText(str(i)) item.setCheckState(QtCore.Qt.Unchecked) self.lst.addItem(item) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = Test() window.show() window.fill_lst() sys.exit(app.exec_())
- как запретить чекбокс для надписи?
- при клике на надпись чтобы выделялись все элементы под ней (так сказать, вся группа)
- ну и если в группе нет элементов, чтобы удалилась со списка и сама группа