向大部分商業**軟體一樣,使用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...