4
最近,我使用PyOpenGL繪製了三角形和多邊形等簡單場景。代碼非常簡單,使用不同的GL_TRIANGLES和GL_POLYGON並沒有提出任何問題。PyQt OpenGL:繪製簡單場景
之後,我決定將GUI添加到我的應用程序並下載pyqt4。 所以現在我從那裏使用QtOpenGL,並且卡住了。 閱讀了幾篇教程後,我可以執行的一件事是this。下面是代碼:X
import sys
import math
from PyQt4 import QtCore, QtGui, QtOpenGL
try:
from OpenGL import GL
except ImportError:
app = QtGui.QApplication(sys.argv)
QtGui.QMessageBox.critical(None, "OpenGL hellogl",
"PyOpenGL must be installed to run this example.")
sys.exit(1)
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
self.glWidget = GLWidget()
self.button = self.createButton()
mainLayout = QtGui.QHBoxLayout()
mainLayout.addWidget(self.glWidget)
mainLayout.addWidget(self.button)
self.setLayout(mainLayout)
self.setWindowTitle("Hello GL")
def createButton(self):
button = QtGui.QPushButton("&WOOF")
button.clicked.connect(self.close)
return button
class GLWidget(QtOpenGL.QGLWidget):
def __init__(self, parent=None):
super(GLWidget, self).__init__(parent)
self.trolltechPurple = QtGui.QColor.fromCmykF(0.39, 0.39, 0.0, 0.0)
def minimumSizeHint(self):
return QtCore.QSize(100, 300)
def sizeHint(self):
return QtCore.QSize(400, 400)
def initializeGL(self):
self.qglClearColor(self.trolltechPurple.dark())
def paintGL(self):
GL.glMatrixMode(GL.GL_MODELVIEW)
GL.glLoadIdentity()
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT)
GL.glColor3f(1,0,0)
GL.glRectf(-1,-1,1,0)
GL.glColor3f(0,1,0)
GL.glRectf(-1,0,1,1)
GL.glBegin(GL_TRIANGLES)
glVertex2f(3.0, 3.0)
glVertex2f(5.0, 3.0)
glVertex2f(5.0, 5.0)
glVertex2f(6.0, 4.0)
glVertex2f(7.0, 4.0)
glVertex2f(7.0, 7.0)
glEnd()
GL.glFinish()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
當試圖使用,例如GL_TRIANGLES,我有這樣的錯誤:
NameError: global name 'GL_TRIANGLES' is not defined
也許我還沒有看夠身邊,但我沒有找到任何解決方案
所以我的問題是如何在我的QGLWidget中繪製不同的數字。
感謝您的幫助。
大加讚賞,鯨先生爲蟒蛇QGLWidget來繪圖一個簡單的工作示例! – alyona