opengl嵌入pyqt5編譯的分割視窗中

2021-08-20 19:11:00 字數 2829 閱讀 1884

向大部分商業**軟體一樣,使用opengl顯示三維模型,首先需要將opengl的視窗嵌入到pyqt5編譯的介面中

下面是乙個小例子:

[python] 

view plain

copy

from

pyqt5.qtgui 

import

*  from

pyqt5.qtwidgets 

import

*  from

pyqt5.qtcore 

import

*  from

pyqt5.qtopengl 

import

qglwidget  

import

sys  

from

opengl.gl 

import

*  class

mainwindow(qmainwindow):  

"""docstring for mainwindow"""

def__init__(

self

, parent = 

none

):  

super(mainwindow,self

).__init__(parent)  

self

.basic()  

splitter_main = self

.split_()  

self

.setcentralwidget(splitter_main)  

#視窗基礎屬性

defbasic(

self

):  

#設定標題,大小,圖示

self

.setwindowtitle(

"gt"

)  self

.resize(

1100

,650

)  self

.setwindowicon(qicon(

"./image/gt.png"

))  

#居中顯示

screen = qdesktopwidget().geometry()  

self_size = self

.geometry()  

self

.move((screen.width() - self_size.width())/

2,(screen.height() - self_size.height())/

2)  

#分割視窗

defsplit_(

self

):  

splitter = qsplitter(qt.vertical)  

s = openglwidget()   #將opengl例子嵌入gui

splitter.addwidget(s)  

testedit = qtextedit()  

splitter.addwidget(testedit)  

splitter.setstretchfactor(0,3

)  splitter.setstretchfactor(1,2

)  splitter_main = qsplitter(qt.horizontal)  

textedit_main = qtextedit()  

splitter_main.addwidget(textedit_main)  

splitter_main.addwidget(splitter)  

splitter_main.setstretchfactor(0,1

)  splitter_main.setstretchfactor(1,4

)  return

splitter_main  

class

openglwidget(qglwidget):  

definitializegl(

self

):  

glclearcolor(1,0

,0,1

)  glenable(gl_depth_test)  

glenable(gl_light0)  

glenable(gl_lighting)  

glcolormaterial(gl_front_and_back, gl_ambient_and_diffuse)  

glenable(gl_color_material)  

defpaintgl(

self

):  

glclear(gl_color_buffer_bit | gl_depth_buffer_bit)  

glbegin(gl_********s)  

glcolor3f(1.0

, 0.0

, 0.0

)  glvertex3f(-0.5

, -0.5, 0

)  glcolor3f(0.0

, 1.0

, 0.0

)  glvertex3f( 0.5

, -0.5, 0

)  glcolor3f(0.0

, 0.0

, 1.0

)  glvertex3f( 0.0

,  0.5, 0

)  glend()  

if__name__ == 

"__main__"

:  win = mainwindow()  

win.show()  

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

也可以將qglwidget的類寫在另乙個檔案中,然後再次匯入檔案實現

原文:

pyqt5切換python版本 pyqt5介面切換

主要的思路就是建立兩個frame 如果有兩個以上同理 使用setvisible 函式顯示或者隱藏frame 引數是bool值 import sys from pyqt5.qtwidgets import from pyqt5.qtcore import from pyqt5.qtgui import...

pyqt5多執行緒優化 PyQt5多執行緒

您不應該向主檢視傳送乙個新的小部件 qlabel 因為它將是乙個新標籤,而不是原始標籤,您應該傳送str型別的文字class thread qthread changepixmap pyqtsignal qpixmap changelabel pyqtsignal str def run self ...

PyQT5 學習使用 筆記 一 安裝pyQT5

之前已經學習過了qt 的 基本使用了解了 訊號和槽 的機制。由於新專案需要跨平台,所以 在視覺開發包的選擇上 選擇了opencv python,所幸 qt也有pyqt5 的包可以和 opencv python 聯合使用開發。廢話不說了 開始安裝吧。開啟cmd命令列介面輸入 pip install p...