2017-06-26 9 views
-1

私はPyQt5とOpenGLを動作させようとしていますが、何が欠けているのか分かりません。このコードを実行しようとするとerr 1282invalid operationglTransaltef(0.0, 0.0, -5)になっています。私はこのエラーをgoogleにしようとしましたが、この機能に関係するものは見つかりませんでした。PyQt5とOpenGLを試してみる

app = QApplication(sys.argv) 
window = mainWindow.mainWindow() 
window.setupUI() 
window.show() 
sys.exit(app.exec_()) 

class mainWindow(QMainWindow): 

    def __init__(self, *args): 
     super(mainWindow, self).__init__(*args) 
     loadUi('minimal.ui', self) 

    def setupUI(self): 
     self.openGLWidget.initializeGL() 
     self.openGLWidget.resizeGL(651,551) 
     gluPerspective(45, 651/551, 0.1, 50.0) 
     glTranslatef(0.0,0.0, -5) 

私はQOpenGLWidgetを宣言する必要はありません(私はそれを正しく持っている場合)を意味し、私は私のGUIレイアウトの.uiファイルを使用していて、それはそれで、オブジェクトをopenGLWidgetましたなぜなら私はすでにOpenGLの機能を1つ持っていて、glTranslatef のように、このオブジェクトに表示されているものに影響を及ぼすはずです。

+0

私はこれらの機能を使用してコードをテストしているし、彼らはあなたがそれを試みることができる、うまく機能し、これはである:おかげで、everythin作品@eyllanesc https://github.com/eyllanesc/stackoverflow/tree/master/OpenglPyQtTest – eyllanesc

+0

良い。私のコードでは 'OpenGL.GLUT'をインポートせず、' openGLWIdget.paintGL'を再定義するのを忘れました – Kamanji

+0

私はこの回答を投稿しています。正しいものとしてマークしてください。 – eyllanesc

答えて

2

あなたはpaintGlメソッドをオーバーライドすることに加えて、私は次の部分での例を示し、あなたのケースのためのGLUTモジュール、pyopenglライブラリを使用する必要があります。

import sys 

from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from PyQt5.uic import * 

from OpenGL.GL import * 
from OpenGL.GLUT import * 
from OpenGL.GLU import * 

class mainWindow(QMainWindow): 

    def __init__(self, *args): 
     super(mainWindow, self).__init__(*args) 
     loadUi('minimal.ui', self) 

    def setupUI(self): 
     self.openGLWidget.initializeGL() 
     self.openGLWidget.resizeGL(651,551) 
     self.openGLWidget.paintGL = self.paintGL 
     timer = QTimer(self) 
     timer.timeout.connect(self.openGLWidget.update) 
     timer.start(1000) 

    def paintGL(self): 
     glClear(GL_COLOR_BUFFER_BIT) 
     glColor3f(1,0,0); 
     glBegin(GL_TRIANGLES); 
     glVertex3f(-0.5,-0.5,0); 
     glVertex3f(0.5,-0.5,0); 
     glVertex3f(0.0,0.5,0); 
     glEnd() 

     gluPerspective(45, 651/551, 0.1, 50.0) 
     glTranslatef(0.0,0.0, -5) 



app = QApplication(sys.argv) 
window = mainWindow() 
window.setupUI() 
window.show() 
sys.exit(app.exec_()) 

完全な例はで見つけることができますhttps://github.com/eyllanesc/stackoverflow/tree/master/OpenglPyQtTest