尝试让PyQt5和OpenGL正常工作

2024-09-30 20:27:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使PyQt5和OpenGL正常工作,但无法确定缺少什么。当我试图运行这段代码时,我得到err 1282invalid operationglTransaltef(0.0, 0.0, -5)。我试图用谷歌搜索这个错误,但没有找到任何与此功能相关的内容。在

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

^{pr2}$

我将.ui文件用于我的GUI布局,它上面有openGLWidget对象,这意味着(如果我得到正确的话)我不必声明QOpenGLWidget,因为我已经有了一个和所有的OpenGL函数,比如glTranslatef 应在此对象上显示的内容生效。在


Tags: 对象代码功能app内容错误syswindow
1条回答
网友
1楼 · 发布于 2024-09-30 20:27:26

您必须使用pyopengl库,对于您的例子,GLUT模块,除了重写paintGl方法之外,我在下面的部分中展示了一个示例:

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找到

相关问题 更多 >