Drop von Treewidget Daten

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
MLude
User
Beiträge: 5
Registriert: Dienstag 20. August 2013, 15:41

Hallo zusammen,

ich lese in ein Treewidget Daten aus einer Datei ein. Die erste Spalte im Tree ist dabei der Dateiname, die zweite sind die Bezeichnungen der Spalten der eingelesenen Textdatei. Ich will nun per Drag and Drop die Daten in ein Diagramm ziehen, um dann den "gedroppten" Channel (entspricht einer Spalte der eingelesenen Textdatei) im Diagramm über der Zeit zu plotten (Die Zeit ist immer die erste Spalte der Datei). Um dies zu tun, brauche ich den Itemtext von Dateiname und Channelname sowie den Pfad, in dem die Datei liegt. Kann mir jemand sagen, wie ich das als Dropevent formuliere bzw. wie ich an die benötigten Daten komme?

Hier ist die Initialisierung meines Trees (kommt aus dem QtDesigner):
self.treeWidget = QtGui.QTreeWidget(self.centralwidget)
self.treeWidget.setDragDropMode(QtGui.QAbstractItemView.DragOnly)

Meine Diagrammklasse ist die folgende:
class MplWidget(QtGui.QWidget):
#"""Widget defined in Qt Designer"""
def __init__(self, parent = None):
# initialization of Qt MainWindow widget
QtGui.QWidget.__init__(self, parent)
# set the canvas to the Matplotlib widget
self.canvas = MplCanvas()
#accept drops
self.setAcceptDrops(True)

def dragEnterEvent(self, event):
event.accept()
def dropEvent(self, event):
print "Hier wird normal das Diagramm mit Daten gefuellt"

In einer weiteren Klasse mainwindow befindet sich dann die Methode update_graph, die aufgerufen werden soll (mit dem Dateinamen und Channelnr als Übergabewerte):
def update_graph(self, filename, channelnr):
x=[]
y=[]
data=open(filename, 'r')
for i in data.readlines():
x.append(float(i.split('\t')[0]))
y.append(float(i.split('\t')[channelnr]))
self.mpl.canvas.ax.clear()
self.mpl.canvas.ax.plot(x, y)
self.mpl.canvas.draw()

Es wäre super, wenn hier jemand helfen könnte.
Antworten