- Пользователь должен иметь возможность установить только один флажок одновременно для
каждого QTreeWidgetItem. Таким образом, выбор данного флажка
QTreeWidgetItem должен отменить выбор других флажков этого
QTreeWidgetItem.
Выбор/отмена выбора данного родительского флажка QTreeWidgetItem
должен установить/снять выбор всех его дочерних флажков в том же столбце.
Ниже приведен мой код:
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5.Qt import Qt
import sys
def main():
app = QtWidgets.QApplication(sys.argv)
tree = QtWidgets.QTreeWidget()
tree.resize(500, 200)
headerItem = QtWidgets.QTreeWidgetItem()
item = QtWidgets.QTreeWidgetItem()
tree .setColumnCount(4)
tree .setHeaderLabels(["pluto", "X", "Y", "Z", ""])
for i in range(3):
parent = QtWidgets.QTreeWidgetItem(tree)
parent.setText(0, "Parent {}".format(i))
parent.setCheckState(1, Qt.Unchecked)
parent.setCheckState(2, Qt.Unchecked)
parent.setCheckState(3, Qt.Unchecked)
#parent.setFlags(parent.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)
for x in range(5):
child = QtWidgets.QTreeWidgetItem(parent)
child.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
child.setText(0, "Child {}".format(x))
child.setCheckState(1, Qt.Unchecked)
child.setCheckState(2, Qt.Unchecked)
child.setCheckState(3, Qt.Unchecked)
tree.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Подробнее здесь: https://stackoverflow.com/questions/740 ... x-at-atime