gpt4 book ai didi

python - 如何将 PyQt5 .ui 与 PyOpenGL 一起使用

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:32 25 4
gpt4 key购买 nike

如果我在 Qt Designer 中创建了界面,如何在我的 python 应用程序中使用 Qt 的 OpenGLWidget?

最佳答案

你应该已经安装了PyOpenGL、PyQt5、Qt5编辑器(我们不需要IDE,但我们需要自带的Qt Designer)

使用 QtDesigner 创建包含所有必要控件和 OpenGL 小部件的 .ui 文件(适本地命名小部件,因为在 python 中您将使用此名称来访问小部件的对象)将此文件命名为 test.ui 并将其放置在与 .py 文件相同的目录中您的 OpenGL 小部件必须命名为“openGLWidget”

import OpenGL.GL as gl
import OpenGL.GLU as glu
import OpenGL.GLUT as glut
from PyQt5 import QtWidgets as qWidget
from PyQt5 import QtGui as qGui
from PyQt5 import QtCore as qCore
from PyQt5 import uic
import sys
import os


class mainWindow(qWidget.QMainWindow):
"""Main window class."""

def __init__(self, *args):
"""Init."""
super(mainWindow, self).__init__(*args)
ui = os.path.join(os.path.dirname(__file__), 'test.ui')
uic.loadUi(ui, self)

def setupUI(self):
print("\033[1;101m SETU6P UI \033[0m")
self.windowsHeight = self.openGLWidget.height()
self.windowsWidth = self.openGLWidget.width()

self.openGLWidget.initializeGL()
self.openGLWidget.resizeGL(self.windowsWidth, self.windowsHeight)
self.openGLWidget.paintGL = self.paintGL
self.openGLWidget.initializeGL = self.initializeGL

def paintGL(self):
self.loadScene()
glut.glutWireSphere(2, 13, 13)

def initializeGL(self):
print("\033[4;30;102m INITIALIZE GL \033[0m")
gl.glEnable(gl.GL_BLEND)
gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
gl.glEnable(gl.GL_DEPTH_TEST)

def loadScene(self):
gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.glLoadIdentity()
x, y, width, height = gl.glGetDoublev(gl.GL_VIEWPORT)
glu.gluPerspective(
45, # field of view in degrees
width / float(height or 1), # aspect ratio
.25, # near clipping plane
200, # far clipping plane
)

gl.glMatrixMode(gl.GL_MODELVIEW)
gl.glLoadIdentity()

glu.gluLookAt(12, 12, 12, 0, 0, 0, 0, 1, 0)


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

此时,您应该会看到 GUI 窗口,其中包含您放置的所有元素,以及中心显示白色球体的 openGLwidget现在您可以使用所有 OpenGL 工具来创建您自己的 3D 应用程序。对于鼠标输入和交互,您可以使用 Qt5 中的 Widget 功能如果您需要使用 Qt5 事件,您应该使用“on_widgetName_clicked”在 mainWindow 类中定义新函数。每当 GUI 中发生此事件时,它将起作用PyOpenGl 功能在此模板中 100% 可用,您也可以使用默认版本 (C/C++) 专用的教程,没有任何问题

Python code .ui file code

将.ui文件另存为test.ui

关于python - 如何将 PyQt5 .ui 与 PyOpenGL 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46981433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com