2017-07-10 5 views
1

Ich kann das Ansichtsfenster nicht auf die gewünschten Abmessungen einstellen. Trotz Angabe (1980 x 1080) ergeben sich die resultierenden Dimensionen (1366 x 855). Die 3D-Beispiele in pyqtgraph zeigen ebenfalls nicht den ganzen Bildschirm und befinden sich nur in der unteren linken Ecke.GLViewWidget Viewport Größe

import pyqtgraph.opengl as gl 
from PyQt5 import QtWidgets 
from pyqtgraph.Qt import QtCore  

app = QtWidgets.QApplication([]) 

view = gl.GLViewWidget() 
view.opts['viewport'] = (0, 0, 1920, 1080) 
view.showMaximized() 

view.setMaximumSize(1920, 1080) 
print ("%d %d" % (view.height() , view.width())) 
view.setWindowTitle('3D Matrix Visualization') 


## create three grids, add each to the view 
xgrid = gl.GLGridItem() 
ygrid = gl.GLGridItem() 
zgrid = gl.GLGridItem() 
view.addItem(xgrid) 
view.addItem(ygrid) 
view.addItem(zgrid) 

## rotate x and y grids to face the correct direction 
xgrid.rotate(90, 0, 1, 0) 
ygrid.rotate(90, 1, 0, 0) 

## scale each grid differently 
xgrid.scale(0.2, 0.1, 0.1) 
ygrid.scale(0.2, 0.1, 0.1) 
zgrid.scale(0.1, 0.2, 0.1) 

Wenn ich den Code ohne Ansichtsfenster zum Ändern von Einstellungen ausführen, das übergeordnete Fenster, durch die Tugend der showMaximized() erscheint Vollbild. Aber die Zeichenfläche ist auf 1/4 des Bildschirms in der unteren linken Ecke beschränkt.

view.opts['viewport'] = (0, 0, 1920, 1080)

obigen Code verwenden, macht ziehbar Bereich größer, aber dann ist es nicht groß genug, um maximiert Bildschirm zu decken. Es ist 1366x855. Das Gitter/die Achse erscheint in der oberen rechten Ecke und nicht in der Mitte von 1366x855. Im Standardmodus erscheint das Raster/die Achse in der Mitte des 1/4-Zeichenbereichs.

Jede Hilfe wird geschätzt.

+0

Haben Sie den tatsächlichen Zeichenbereich überprüft, indem Sie glClearColor auf etwas sichtbares, wie rot setzen? Haben Sie versucht, glViewport direkt in Ihrem Render-Code aufzurufen? –

+0

Versuchte beide und es scheint keinen Effekt zu geben. 'glClearColor (1, 1, 0, 1)' 'glViewport (0, 0, 2880, 1800)' – deepSymmetry

+0

Ist das ein Retina-Bildschirm? MacOS X hat einige seltsame Regeln über Fenster-/Ansichtsgrößen und Ansichtsfensterabmessungen. Wenn das nicht ist, bin ich außer Ideen, die Quelle für GLGridItem zu lesen –

Antwort

0

GLViewWidget ist eine Unterklasse von QtOpenGL.QGLWidget, wie in PyQtGraph's Doc gezeigt.

So können wir vielleicht die view.setFixedSize(WidthOfParent, HeightOfParent) verwenden, um die Größe des Ansichtsfensters bei der Größenanpassung des übergeordneten Widgets anzupassen.