Get selected item name from QTreeWidget PyQt

1.3k Views Asked by At

I have a QTreeWidget with sub-items having a checkbox to select/deselect items. I'm having issue in extracting the "text" of the sub-items.

How do I get the text? I've tried using item.text() and item.__str__() but failed to get the item text.

Code:

import sys
from PyQt5.QtCore import *
from PyQt5 import QtCore
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class MainWindow(QMainWindow):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.FilterList = QTreeWidget()
        self.setCentralWidget(self.FilterList)
        self.setWindowTitle("Form")
        self.generateData()

    def generateData(self):
        self.FilterList.setColumnCount(1)
        self.FilterList.setHeaderLabels(["Filter Questions"])
        DifficultyNode = QTreeWidgetItem(["Difficulty"])
        self.FilterList.addTopLevelItem(DifficultyNode)
        self.FilterList.itemChanged.connect(self.handleItemChanged)
        EasyNode = QTreeWidgetItem(["Easy"])
        EasyNode.setCheckState(0, Qt.Unchecked)
        NormalNode = QTreeWidgetItem(["Normal"])
        NormalNode.setCheckState(0, Qt.Unchecked)
        HardNode = QTreeWidgetItem(["Hard"])
        HardNode.setCheckState(0, Qt.Unchecked)
        
        DifficultyNode.addChild(EasyNode)
        DifficultyNode.addChild(NormalNode)
        DifficultyNode.addChild(HardNode)
        

    def handleItemChanged(self, item, column):
        if item.checkState(column) == QtCore.Qt.Checked:
            print('Item Checked', item)               # I want item "text" here
        elif item.checkState(column) == QtCore.Qt.Unchecked:
            print('Item Unchecked', item)             # and here

def main():
    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    app.exec_()

main()
0

There are 0 best solutions below