使用openGL绘制图形显示在pyqt建立的ui界面中,一种方法是使用widget对象,将widget提升成自定义成openglwidget显示openGL的图像。
1.安装pyqt、qtdesigner.exe、pyuic.exe工具。
qtdesigner.exe可以像QT的IDE一样,拖拽生成操作界面(所见即所得的界面生成工具)。
pyuic.exe可以把界面的.ui文件转化为py文件。
安装 pyQt5 和 pyQt5-tool, 直接使用 pip 或者 conda 安装就行. 设置好pycharm中的 external tool。参考博客1。
博客1:https://blog.youkuaiyun.com/qq_42980303/article/details/87869884
在博客1中提供的路径,安装后可能找不到 designer.exe 文件。
我用的是Anaconda, 是在E:\Anaconda\envs\py_tensorflow_keras\Library\bin路径下找到的。还是找不到的话,参考博客2和博客2.1。
博客2:https://blog.youkuaiyun.com/sinat_21427221/article/details/77448857
博客2.1:https://blog.youkuaiyun.com/qqwangfan/article/details/114290781
同样的方法安装一下 PYUIC.exe。参考博客1。
我使用的路径是E:\Anaconda\envs\py_tensorflow_keras\python.exe
2.安装openGL。
我使用的版本是py-3.7,直接使用conda或pip安装的openGL使用有问题,无法正常运行。所以使用.whl文件进行安装。
安装文件是 PyOpenGL-3.1.5-cp37-cp37m-win_amd64.whl
还有一个加速包 PyOpenGL_accelerate-3.1.5-cp37-cp37m-win_amd64.whl
下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl
3.使用qtdesigner.exe图形化界面设计。
参考博客3可以进行ui设计。直接使用参考的代码, 可能会出现 AttributeError: ‘MyPyQT_Form’ object has no attribute ‘setCentralWidget’ 的错误。解决方法是继承时使用 QtWidgets.QMainWindow 代替 QtWidgets.QWidget 。参考博客4。
博客3:https://www.cnblogs.com/lsdb/p/9122425.html
博客4:https://blog.youkuaiyun.com/wardenjohn/article/details/87628891
4.qt设计的ui中显示openGL图形。
ui中显示openGL图形需要使用widget对象,将widget提升成自定义成openglwidget显示openGL的图像。参考博客5。
博客5:https://www.cxyzjd.com/article/qq_39694792/111719618
5.示例。
设计界面如图:

对于按键QPushButton,无法像QT一样直接转到槽,而是需要自行设置。
首先需要添加槽函数。

绑定槽函数和信号。

设置好发送接收和触发方式,在MainWindows类中定义槽函数即可。
对于显示对象QTextEdit,直接使用即可。
import sys
from PyQt5 import QtWidgets, QtOpenGL
from Ui_design import Ui_MainWindow
# 这里需要用继承的方法. 因为生成的文件可能会因为界面而改变, 直接继承就不用担心代码被覆盖.
class MyPyQT_Form(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyPyQT_Form, self).__init__(parent=parent)
self.setupUi(self) # 这个是继承.ui文件的类里面来的.
#实现pushButton_click()函数,textEdit是我们放上去的文本框的id
def pushButton_display_click(self):
self.textEdit_display.setText("你点击了按钮")
def pushButton_clear_click(self):
self.textEdit_display.clear()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MyPyQT_Form()
w.show()
sys

这篇博客介绍了如何在PyQt5环境下结合OpenGL绘制图形并显示在UI界面上。首先,详细说明了安装PyQt5、qtdesigner和pyuic的步骤,以及如何在Anaconda环境中找到相关工具。接着,由于直接通过pip或conda安装的OpenGL存在问题,推荐使用特定版本的.whl文件进行安装。然后,通过qtdesigner设计UI,并注意在代码中正确继承QMainWindow而非QWidget。在UI中添加OpenGL显示,需要提升一个Widget为OpenGLWidget,并重写必要的OpenGL函数。博客还提供了一个简单的例子,展示了如何在按钮点击事件中更新OpenGL图像。最后,给出了转换后的UI代码片段,并强调了初始化、重绘和窗口调整时OpenGL函数的调用顺序。
最低0.47元/天 解锁文章
4114





