QTreeWidgetItemIterator
을 필터링하여 검사 할 수없는 항목이 결과에서 누락되지 않도록 할 수 있습니까? 이 예에서 QTreeWidgetItemIterator에서 체크 할 수없는 결과를 필터링하는 방법은 무엇입니까?
TreeList = ({
'Header1': (('Item11', 'Item12',)),
'Header2': (('Item21', 'Item22',)),
})
# LOCATED IN `initLayout` METHOD
for key, value in TreeList.items():
parent = QTreeWidgetItem(self.ListTreeView, [key])
for val in value:
child = QTreeWidgetItem([val])
child.setFlags(child.flags() | Qt.ItemIsUserCheckable)
child.setCheckState(0, Qt.Unchecked)
parent.addChild(child)
# LOCATED IN `initialize` METHOD
iterator = QTreeWidgetItemIterator(self.ListTreeView)
while iterator.value():
val = iterator.value()
try: # Results in object has not attribute
if val.isCheckable():
print('checkable')
except AttributeError as e:
print(e)
iterator += 1
,도
Header1
또는
Header2
는 체크 할 수 있지만, 그 아래에있는 항목은 다음과 같습니다.
QTreeWidget
을 반복 할 때 전체 목록을 반환합니다.
IteratorFlags에 대한 설명서를 보면 설정할 수있는 플래그가 있음을 알 수 있지만 파이썬으로 설정하는 방법을 이해할 수 없으며 그 중 어떤 것이 내 요구에 맞는지 확신 할 수 없습니다. .
지금, val.isCheckable()
은 AttributeError
이됩니다. 예상대로, isCheckable()
은 QTreeWidgetItem
의 속성으로 보이지 않습니까?
바람직하지 않은 항목을 걸러 내고 싶습니다. 그러나 이것이 가능하지 않은 경우, isCheckable()
값을 확인하려면 어떻게해야합니까?
이것은 내가 필요한 것에 매우 잘 맞았습니다. 고맙습니다. –