GLViewWidget视口大小

时间:2017-07-10 03:15:59

标签: opengl viewport pyqt5 pyqtgraph maximize

我无法将视口设置为所需的尺寸。尽管指定(1980 x 1080),但结果尺寸为(1366 x 855)。 pyqtgraph中的3D示例也不显示全屏,仅位于左下角。

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)

如果我在不更改视口设置的情况下运行代码,则showMaximized()的父窗口将全屏显示。但是可绘制区域被限制在左下角屏幕的1/4处。

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

使用上面的代码,确实使可绘制区域更大,但是它不足以覆盖最大化的屏幕。它是1366x855。网格/轴显示在右上角,而不是1366x855的中心。在默认模式下,网格/轴显示在1/4可绘制区域的中心。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

GLViewWidget是QtOpenGL.QGLWidget的子类,如PyQtGraph's Doc所示。

因此,也许我们可以在调整父窗口小部件的同时使用view.setFixedSize(WidthOfParent, HeightOfParent)来调整视口的大小。

答案 1 :(得分:0)

对于具有Retina显示屏的Mac:问题可能是Mac在进行高DPI缩放时试图使用虚拟分辨率,而pyqtgraph使用物理分辨率。

它应该已经在最新的pyqtgraph github分支(link)中修复,但是最新的PYPI版本自2016年以来就没有更新,因此请尝试按照官方建议直接从github安装pip: >

pip install git+https://github.com/pyqtgraph/pyqtgraph