pyqt5 opengl demo
【摘要】 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)