pyqt5 opengl demo

举报
风吹稻花香 发表于 2021/06/04 23:17:18 2021/06/04
【摘要】 import sys from PyQt5 import QtCore, QtGui, QtOpenGL class MyOpenGLWindow(QtGui.QOpenGLWindow): def __init__(self, **kwargs): QtGui.QOpenGLWindow.__init__(self) self.setTitle("MyQOpenGLWi...
import sys
from PyQt5 import QtCore, QtGui, QtOpenGL


class MyOpenGLWindow(QtGui.QOpenGLWindow): def __init__(self, **kwargs): QtGui.QOpenGLWindow.__init__(self) self.setTitle("MyQOpenGLWindow") self.setWidth(800) self.setHeight(800) def paintGL(self): for i in range(0, 5): for j in range(0, 1000): version = QtGui.QOpenGLVersionProfile() version.setVersion(i, j) try: if self.context().versionFunctions(version) is not None: print('{}.{} is ok'.format(i, j)) except Exception as e: print('{}.{} failed: {}'.format(i, j, e)) # def initializeGL(self):
 # self.gl = self.context().versionFunctions()
 # self.gl.glClearColor(0., 0., 0., 1.)
 #
 # def paintGL(self):
 # self.gl.glClear(self.gl.GL_COLOR_BUFFER_BIT)


app = QtGui.QGuiApplication(sys.argv)
myWindow = MyOpenGLWindow()
myWindow.show()

app.exec_();
钟表demo:
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import math
import time

h = 0
m = 0
s = 0


def Draw(): PI = 3.1415926
 R = 0.5
 TR = R - 0.05
 glClear(GL_COLOR_BUFFER_BIT) glLineWidth(5) glBegin(GL_LINE_LOOP) for i in range(100): glVertex2f(R * math.cos(2 * PI / 100 * i), R * math.sin(2 * PI / 100 * i)) glEnd() glLineWidth(2) for i in range(100): glBegin(GL_LINES) glVertex2f(TR * math.sin(2 * PI / 12 * i), TR * math.cos(2 * PI / 12 * i)) glVertex2f(R * math.sin(2 * PI / 12 * i), R * math.cos(2 * PI / 12 * i)) glEnd() glLineWidth(1) h_Length = 0.2
 m_Length = 0.3
 s_Length = 0.4
 count = 60.0
 s_Angle = s / count count *= 60
 m_Angle = (m * 60 + s) / count count *= 12
 h_Angle = (h * 60 * 60 + m * 60 + s) / count glLineWidth(1) glBegin(GL_LINES) glVertex2f(0.0, 0.0) glVertex2f(s_Length * math.sin(2 * PI * s_Angle), s_Length * math.cos(2 * PI * s_Angle)) glEnd() glLineWidth(5) glBegin(GL_LINES) glVertex2f(0.0, 0.0) glVertex2f(h_Length * math.sin(2 * PI * h_Angle), h_Length * math.cos(2 * PI * h_Angle)) glEnd() glLineWidth(3) glBegin(GL_LINES) glVertex2f(0.0, 0.0) glVertex2f(m_Length * math.sin(2 * PI * m_Angle), m_Length * math.cos(2 * PI * m_Angle)) glEnd() glLineWidth(1) glBegin(GL_POLYGON) for i in range(100): glVertex2f(0.03 * math.cos(2 * PI / 100 * i), 0.03 * math.sin(2 * PI / 100 * i)); glEnd() glFlush()


def Update(): global h, m, s t = time.localtime(time.time()) h = int(time.strftime('%H', t)) m = int(time.strftime('%M', t)) s = int(time.strftime('%S', t)) glutPostRedisplay()


glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
glutCreateWindow("My clock")
glutDisplayFunc(Draw)
glutIdleFunc(Update)
glutMainLoop()

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/80711540

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。