opengl嵌入pyqt5编译的分割窗口中 opengl嵌入pyqt5编译的分割窗口中

opengl嵌入pyqt5编译的分割窗口中

向大部分商业仿真软件一样,使用opengl显示三维模型,首先需要将opengl的窗口嵌入到pyqt5编译的界面中

下面是一个小例子:

[python]  view plain  copy
  1. from PyQt5.QtGui import *  
  2. from PyQt5.QtWidgets import *  
  3. from PyQt5.QtCore import *  
  4. from PyQt5.QtOpenGL import QGLWidget  
  5. import sys  
  6. from OpenGL.GL import *  
  7.   
  8. class MainWindow(QMainWindow):  
  9.     """docstring for Mainwindow"""  
  10.     def __init__(self, parent = None):  
  11.         super(MainWindow,self).__init__(parent)  
  12.         self.basic()  
  13.         splitter_main = self.split_()  
  14.         self.setCentralWidget(splitter_main)  
  15.   
  16.     #窗口基础属性  
  17.     def basic(self):  
  18.         #设置标题,大小,图标  
  19.         self.setWindowTitle("GT")  
  20.         self.resize(1100,650)  
  21.         self.setWindowIcon(QIcon("./image/Gt.png"))  
  22.         #居中显示  
  23.         screen = QDesktopWidget().geometry()  
  24.         self_size = self.geometry()  
  25.         self.move((screen.width() - self_size.width())/2,(screen.height() - self_size.height())/2)  
  26.   
  27.     #分割窗口  
  28.     def split_(self):  
  29.         splitter = QSplitter(Qt.Vertical)  
  30.         s = OpenGLWidget()   #将opengl例子嵌入GUI  
  31.         splitter.addWidget(s)  
  32.         testedit = QTextEdit()  
  33.         splitter.addWidget(testedit)  
  34.         splitter.setStretchFactor(0,3)  
  35.         splitter.setStretchFactor(1,2)  
  36.         splitter_main = QSplitter(Qt.Horizontal)  
  37.         textedit_main = QTextEdit()  
  38.         splitter_main.addWidget(textedit_main)  
  39.         splitter_main.addWidget(splitter)  
  40.         splitter_main.setStretchFactor(0,1)  
  41.         splitter_main.setStretchFactor(1,4)  
  42.         return splitter_main  
  43.   
  44. class OpenGLWidget(QGLWidget):  
  45.     def initializeGL(self):  
  46.         glClearColor(1,0,0,1)  
  47.         glEnable(GL_DEPTH_TEST)  
  48.         glEnable(GL_LIGHT0)  
  49.         glEnable(GL_LIGHTING)  
  50.         glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE)  
  51.         glEnable(GL_COLOR_MATERIAL)  
  52.   
  53.     def paintGL(self):  
  54.         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)  
  55.         glBegin(GL_TRIANGLES)  
  56.         glColor3f(1.00.00.0)  
  57.         glVertex3f(-0.5, -0.50)  
  58.         glColor3f(0.01.00.0)  
  59.         glVertex3f( 0.5, -0.50)  
  60.         glColor3f(0.00.01.0)  
  61.         glVertex3f( 0.0,  0.50)  
  62.         glEnd()  
  63.   
  64.   
  65. if __name__ == "__main__":  
  66.     app = QApplication(sys.argv)  
  67.     win = MainWindow()  
  68.     win.show()  
  69.     sys.exit(app.exec_())  

运行便可以看到,opengl成功嵌入到了pyqt5的分割窗口中~

也可以将QGLWidget的类写在另一个文件中,然后再次导入文件实现

原文:https://blog.csdn.net/ydsf521/article/details/80673699

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/80711825