2014-01-28 4 views
0

Как создать древовидную структуру, в то время как каждый элемент на флажке установлен в pyside? Элементы дерева являются словарь, которые выглядят как на примере ниже:Как создать древовидную форму флажков?

A: 1: 1.1: 1.1.1 
      1.1.2 
     1.2: 1.2.1 
      1.2.2 
    2: 2.1 2.1.1 
      2.1.2 
B ... 
+2

Можете ли вы показать нам, что вы вы пробовали? – smont

+0

Этот вопрос не только неясен, но и не показывает никаких усилий. – neuronet

ответ

4

Попробуйте это:

import PyQt4.QtGui as gui 
import PyQt4.QtCore as core 

dat = { 'A': 
      { '1': 
       {'1.1': ['1.1.1', '1.1.2'], 
       '1.2': ['1.2.1', '1.2.2'] 
       },    
      '2': 
       {'2.1': ['2.1.1','2.1.2']} 
      } 
    } 

def add(p,ch): 
    if isinstance(ch,dict): 
     for k,v in ch.iteritems(): 
      item = gui.QTreeWidgetItem(p) 
      item.setText(0, k) 
      item.setCheckState(0,core.Qt.Unchecked) 
      item.setFlags(core.Qt.ItemIsUserCheckable | core.Qt.ItemIsEnabled) 
      add(item,v) 
      #p.addChild(item)   
    else: 
     for txt in ch: 
      item = gui.QTreeWidgetItem(p) 
      item.setText(0, txt) 
      item.setCheckState(0,core.Qt.Unchecked) 
      item.setFlags(core.Qt.ItemIsUserCheckable | core.Qt.ItemIsEnabled) 
      #p.addChild(item)   


app = gui.QApplication([]) 
tw = gui.QTreeWidget() 

add(tw,dat) 

tw.show() 

app.exec_() 
Смежные вопросы