python openGL: Как изменить цвет сетки? - PullRequest
2 голосов
/ 31 марта 2020

победа Я только начинаю некоторые эксперименты с трехмерной графикой, используя python и openGL, но я уже пытаюсь изменить цвет сетки, потому что мне нужна черная сетка на белом фоне. Я просто скопировал пример pyqtgraph GLSurfacePlot.py и изменил строку

g = gl.GLGridItem ()

на любую из них, но никто не изменил цвет:

g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = (0.0, 0.0, 0.0, 1.0) )
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = (1, 1, 0, 1) )
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = 'k')
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = pg.glColor((0.0, 0.0, 0.0, 1.0)) )
color = QtGui.QColor("b")
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = color)

Что я делаю не так? У меня есть победа 10, python 3.7, pygtgraph 0.10.0, PyopenGL 3.1.5, PyQt5 5.11.3

спасибо за любую помощь

Мартин

1 Ответ

1 голос
/ 31 марта 2020

К сожалению, это ошибка в GLGridItem, он не использует параметр color в своем конструкторе:

def __init__(self, size=None, color=None, antialias=True, glOptions='translucent'):
     GLGraphicsItem.__init__(self)
     self.setGLOptions(glOptions)
     self.antialias = antialias
     if size is None:
         size = QtGui.QVector3D(20,20,1)
     self.setSize(size=size)
     self.setSpacing(1, 1, 1)

и просто напрямую устанавливает белый цвет с прозрачностью 30% при его рисовании:

def paint(self):
    .......................
     glColor4f(1, 1, 1, .3)
    .......................

Если вы хотите установить цвет сетки, вы можете либо изменить стандартный модуль (используйте параметр цвета в конструкторе), либо скопировать код из модуля в свой код и использовать его вместо стандартного GLGridItem:

def __init__(self, size=None, color=None, antialias=True, glOptions='translucent'):
     GLGraphicsItem.__init__(self)
     self.setGLOptions(glOptions)
     self.color = color
     self.antialias = antialias
     if size is None:
         size = QtGui.QVector3D(20,20,1)
     self.setSize(size=size)
     self.setSpacing(1, 1, 1)

def paint(self):
    .......................
    if self.color is None:
       glColor4f(1, 1, 1, .3)
    else:
       glColor4f(*self.color)
    .......................
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...