2016-04-27 6 views
1

Ich versuche, ein Plot-Layout mit PyQtGraph innerhalb einer PyQt-Anwendung zu erstellen.PyQtGraph Graphics Layout Widget Problem

Ich brauche eine einzelne Zeile mit zwei Plots die ersten zwei Spalten breit und die zweite eine einzelne Spalte breit.

die Dokumentation Lesen ich so etwas wie dies vermutet funktionieren würde:

# Create the PyQtGraph Plot area 
self.view = pg.GraphicsLayoutWidget() 
self.w1 = self.view.addPlot(row=1, col=1, colspan=2, title = 'Data1') 
self.w2 = self.view.addPlot(row=1, col=3, colspan=1, title = 'Data2') 

Aber in diesem Fall ich zwei Grundstücksflächen jeweils unter 50% der Fensterbreite.

Was mache ich falsch?

Mit besten Grüßen,

Ben

Antwort

2

colspan können Sie eine Zelle in dem Raster-Layout-Spannweite über mehrere Spalten lassen. Ich kann mehrere Gitterzellen zusammenführen. In Ihrem Beispiel haben Sie ein Raster von 1 Zeile mal 3 Spalten. Die ersten zwei Spalten haben offensichtlich jeweils eine Breite von 25% der Gesamtmenge (oder die eine hat 0% und die andere Hälfte 50%), und die dritte Spalte nimmt die anderen 50%. Kurz gesagt: colspan erlaubt es Ihnen nicht, die Breite der Spalten zu steuern.

Also, wie die Breite der Spalten oder deren Inhalt einstellen? Das war überraschend schwer zu finden. Es scheint keine PyQtGraph-Methoden zu geben, die dies direkt behandeln, Sie müssen die zugrundeliegenden Qt-Klassen verwenden.

Eine pg.GraphicsLayoutWidget hat als zentrales Element eine pg.GraphicsLayout. Dies wiederum hat ein layout Mitglied, das eine Qt QGraphicsGridLayout enthält. Auf diese Weise können Sie die Spaltenbreiten manipulieren, mit: setColumnFixedWidth, setColumnMaximimumWidth, setColumnStretchFactor usw. So etwas kann sein, was Sie brauchen:

self.view = pg.GraphicsLayoutWidget() 
self.w1 = self.view.addPlot(row=0, col=0, title = 'Data1') 
self.w2 = self.view.addPlot(row=0, col=1, title = 'Data2') 

qGraphicsGridLayout = self.view.ci.layout 
qGraphicsGridLayout.setColumnStretchFactor(0, 2) 
qGraphicsGridLayout.setColumnStretchFactor(1, 1) 

einen Blick in the documentation of QGraphicsGridLayout nehmen und ein wenig experimentieren.

+0

Das hat perfekt funktioniert. Vielen Dank. – BMichell