【发布时间】:2018-04-25 10:14:56
【问题描述】:
我有 OpenGl 的简单代码,但绘图区域显示不正确,当我想要全尺寸时,它大约是 100x30。但是,我的 OpenGL 小部件具有适当的清晰行为。我该如何解决这个问题?
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
from PyQt4 import QtCore, QtGui, QtOpenGL
import sys
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
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 Ui_Form(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(700, 532)
self.openGLWidget = GLWidget(Form)
self.openGLWidget.setGeometry(QtCore.QRect(10 , 10, 512, 512))
self.openGLWidget.setObjectName("openGLWidget")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
class GLWidget(QtOpenGL.QGLWidget):
def __init__(self, parent=None):
super(GLWidget, self).__init__(parent)
def initializeGL(self):
GL.glClearColor(0,255,0,255)
def paintGL(self):
glEnable(GL_TEXTURE_2D)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
gluOrtho2D(0, 1, 0, 1);
glColor3f(1, 0, 0)
glDisable(GL_TEXTURE_2D)
glBegin(GL_QUADS)
glVertex2i(0, 0)
glVertex2i(1000, 0)
glVertex2i(1000, 1000)
glVertex2i(0, 1000)
glEnd();
glFlush()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Ui_Form()
window.show()
sys.exit(app.exec_())
我尝试更改 glOrtho 并添加一些 glut 函数但没有结果。我也尝试添加矩阵乘法来缩放它,似乎显示区域有一些错误的值。
【问题讨论】:
-
@Rabbid76 现在我只想让我的矩形打破这个 30x80 的区域。是的,我在 1x1 区域中绘制了 1000x1000 矩形,但为什么它在我的小部件上是 30x80?
标签: python qt opengl pyqt4 pyopengl