opengl嵌入pyqt5编译的分割窗口中
opengl嵌入pyqt5编译的分割窗口中
向大部分商业仿真软件一样,使用opengl显示三维模型,首先需要将opengl的窗口嵌入到pyqt5编译的界面中
下面是一个小例子:
- 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)
- #窗口基础属性
- def basic(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)
- #分割窗口
- def split_(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):
- def initializeGL(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)
- def paintGL(self):
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
- glBegin(GL_TRIANGLES)
- 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__":
- app = QApplication(sys.argv)
- win = MainWindow()
- win.show()
- sys.exit(app.exec_())
运行便可以看到,opengl成功嵌入到了pyqt5的分割窗口中~
也可以将QGLWidget的类写在另一个文件中,然后再次导入文件实现
原文:https://blog.csdn.net/ydsf521/article/details/80673699
opengl嵌入pyqt5编译的分割窗口中相关推荐
- 自定义UserControl的属性为什么不能在设计时显示在属性窗口中
自定义UserControl的属性为什么不能在设计时显示在属性窗口中 自定义UserControl的属性为什么不能在设计时显示在属性窗口中 http://www.cnblogs.com/dudu/ar ...
- QWidget子窗口中setStyleSheet无效,解决方法
QWidget子窗口中setStyleSheet无效,解决方法 参考文章: (1)QWidget子窗口中setStyleSheet无效,解决方法 (2)https://www.cnblogs.com/ ...
- 【java】swing窗口中的JOptionPane类及字符串转其他数据类型的应用
swing窗口中的JOptionPane类及字符串转其他数据类型的应用 代码清单: package p1; //*********Found********** import javax.swing. ...
- 【java】swing窗口中JPanel和JFrame的应用
swing窗口中JPanel和JFrame的应用:程序的功能是在JFrame窗口中输出一条语句,并且保证能够退出窗口. 代码清单 如下: package p1; import javax.swing. ...
- 如何在终端窗口中在Linux中创建文件?
本文翻译自:How to create a file in Linux from terminal window? 在Linux终端中创建文件最简单的方法是什么? #1楼 参考:https://sta ...
- 如何使scrapy爬取信息不打印在命令窗口中
通常,我们使用这条命令运行自己的scrapy爬虫: scrapy crawl spider_name 但是,由这条命令启动的爬虫,会将所有爬虫运行中的debug信息及抓取到的信息打印在运行窗口中.很乱 ...
- PowerBuilder 输入框中输入完数据 按回车把相应的数据显示在数据窗口中
文本框回车搜索 代码片. string ls_sql_old //老的SQL string ls_sql_where //条件 string ls_sql_new //新的SQL string ls_ ...
- AfxWnd42 qq2006中怎样取得发送消息窗口中的Richedit
qq2006中怎样取得发送消息窗口中的Richedit 2006-11-10 02:20hzp997 | 分类:Windows | 浏览1695次 学习编程中想让程序可以自动在QQ的发送消息框中自动发 ...
- 【红宝书】OpenGL Demo code编译与运行
本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G算力网络技术标准研究. [红宝书]OpenGL Demo code编译与运行 文章 ...
最新文章
- 3.1.1蛮力法之选择排序
- 机器学习:范数及代码实现
- 02.德国博士练习_01_cluster_install
- .NET Core 下使用 Kafka
- djano 字段不重复_Java 14 发布了,不使用quot;classquot;也能定义类了?还顺手要干掉Lombok!...
- 【OpenCV 例程200篇】97. 反谐波平均滤波器
- 管理感悟:软件公司不加班还搞什么软件
- java实现GBK与UTF8的相互转换
- NATS 分布式消息队列系统
- 如何在Java中将Excel(XLSX)转换为Word(DOCX)
- 【数字信号处理】基于DFT的滤波系列4之加窗(含MATLAB代码)
- ThinkPHP3.2.3 实现微信小程序微信授权登录
- opencv python 多张jpg图片转成avi视频
- 什么是脏读、不可重复读、幻读?别说你不知道
- 互斥事件的概念和公式_专题49 互斥事件和独立事件的概率及条件概率(打包)-2019年高考数学(理)名师揭秘之一轮总复习...
- Find命令搭配atime/ctime/mtime时的日期写法
- Ubuntu IBM T43的显卡驱动安装
- 获得研究生学历的6种方式
- 报税系统服务器地址怎么填,报税上海服务器地址
- 米思齐学习例程(八):声控灯
热门文章
- 开机秒全国99%电脑 实战UEFI安装Win8
- XSLT - 利用template实现for循环
- java多线程测试框架(含入参和返回值)
- 我眼中未来的计算机作文600字,我的电脑作文600字
- junit5_使用Junit测试名称
- quasar_Quasar和Akka –比较
- 使用MOXy 2.5.1快速且有点脏的JSON模式生成
- sizebox模型下载_彻底弄懂CSS盒模型BoxModel
- c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统
- php对连接加密后传,PHP 加密解密和解决URL传输问题