import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.uic import *
import xml.etree.ElementTree as ET
def __init__(self):
# -- Load QT .ui file --
self.ui = loadUi('test.ui')
# ----
# -- Display UI using QT ui layout --
self.ui.show()
# ----
# -- Initialize data models for Treeview and Tableview
self.ui.XMLTreeView.setModel(self.modelTreeView)
self.ui.ItemProperties.setModel(self.modelTreeView)
# ----
#UI Tree view item selection
self.connect(self.ui.XMLTreeView.selectionModel(), SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), fnXMLUpdate)
tree = ET.parse('test.xml')
root = tree.getroot()
temp = tree.findall(".//tab[@uid='123']")
parseXML(self.modelTreeView, root)
# ----
#UI Decorations
self.modelTreeView.setHorizontalHeaderLabels([self.tr("Object")])
self.modelTableView.setHorizontalHeaderLabels(["Property","Value"])
# ----
def fnXMLUpdate(current,previous):
print("new item selected in tree view")
index = window.ui.XMLTreeView.selectedIndexes()[0]
print(index)
crawler = index.model().itemFromIndex(index)
print "Node Name: %s" % crawler.data(Qt.DisplayRole).toString()
uid=crawler.data(Qt.UserRole).toString()
print "Node uid: %s" % uid
print("end new tree view")
item.setData(crawler.data(Qt.UserRole), Qt.DisplayRole)
item.setData(crawler.data(Qt.UserRole), Qt.UserRole)
window.ui.ItemProperties.setRootIndex(index)
#window.modelTableView.setRootIndex(index)
#window.modelTableView.appendRow(item)
#window.modelTableView.setHorizontalHeaderLabels(["Property","Value"])
def parseXML(parent, node):
for element in node:
item.setData(element.attrib.get('name'), Qt.DisplayRole)
item.setData(element.attrib.get('uid'), Qt.UserRole)
parseXML(item, element)
parent.appendRow(item)
if __name__ == "__main__":
window = Window()
sys.exit(app.exec_())
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.uic import *
import xml.etree.ElementTree as ET
class Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
# -- Load QT .ui file --
self.ui = loadUi('test.ui')
# ----
# -- Display UI using QT ui layout --
self.ui.show()
# ----
# -- Initialize data models for Treeview and Tableview
self.modelTreeView = QStandardItemModel()
self.modelTableView = QStandardItemModel()
self.ui.XMLTreeView.setModel(self.modelTreeView)
self.ui.ItemProperties.setModel(self.modelTreeView)
# ----
#UI Tree view item selection
self.connect(self.ui.XMLTreeView.selectionModel(), SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), fnXMLUpdate)
tree = ET.parse('test.xml')
root = tree.getroot()
temp = tree.findall(".//tab[@uid='123']")
parseXML(self.modelTreeView, root)
# ----
#UI Decorations
self.modelTreeView.setHorizontalHeaderLabels([self.tr("Object")])
self.modelTableView.setHorizontalHeaderLabels(["Property","Value"])
# ----
def fnXMLUpdate(current,previous):
print("new item selected in tree view")
index = window.ui.XMLTreeView.selectedIndexes()[0]
print(index)
crawler = index.model().itemFromIndex(index)
print "Node Name: %s" % crawler.data(Qt.DisplayRole).toString()
uid=crawler.data(Qt.UserRole).toString()
print "Node uid: %s" % uid
print("end new tree view")
item = QStandardItem()
item.setData(crawler.data(Qt.UserRole), Qt.DisplayRole)
item.setData(crawler.data(Qt.UserRole), Qt.UserRole)
window.ui.ItemProperties.setRootIndex(index)
#window.modelTableView.setRootIndex(index)
#window.modelTableView.appendRow(item)
#window.modelTableView.setHorizontalHeaderLabels(["Property","Value"])
def parseXML(parent, node):
for element in node:
item = QStandardItem()
item.setData(element.attrib.get('name'), Qt.DisplayRole)
item.setData(element.attrib.get('uid'), Qt.UserRole)
parseXML(item, element)
parent.appendRow(item)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
sys.exit(app.exec_())
To copy to clipboard, switch view to plain text mode
Bookmarks