我试图创建一个循环,它一直在执行并检查键输入。这个循环会修改OpenGL属性,但我不知道如何创建它。我想我必须重写一个方法,但我不知道是哪个方法。我创建了两个类,一个用于不重写任何内容的主窗口,另一个用于OpenGL小部件,它重写QOpenGLWidget并使用(和重写)initializeGL和paintGL方法。你知道吗
代码:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QOpenGLWidget
from OpenGL.GL import *
from OpenGL.GLU import *
import sys
class Render(QOpenGLWidget):
def initializeGL(self):
glClear(GL_COLOR_BUFFER_BIT)
self.vertices_v = [
[1, 1, 0],
[1, -1, 0],
[-1, -1, 0],
[-1, 1, 0]
]
self.vertices_h = [
[1, 0, -1],
[1, 0, 1],
[-1, 0, 1],
[-1, 0, -1]
]
glEnable(GL_DEPTH_TEST)
gluPerspective(60, 750 / 1000, 1, 30)
glTranslatef(0, -0.5, -1.5)
def paintGL(self):
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_DST_COLOR)
glBegin(GL_QUADS)
glColor4fv((0, 1, 0, 0.6))
for vertex in range(4):
glVertex3fv(self.vertices_v[vertex])
glColor4fv((1, 0, 0, 0.6))
for vertex in range(4):
glVertex3fv(self.vertices_h[vertex])
glEnd()
glDisable(GL_BLEND)
class UiVentana:
def __init__(self):
ventana.resize(1250, 750)
ventana.setLayoutDirection(QtCore.Qt.LeftToRight)
ventana.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
self.widget_central = QtWidgets.QWidget(ventana)
self.gridLayoutWidget = QtWidgets.QWidget(self.widget_central)
self.gridLayoutWidget.setGeometry(QtCore.QRect(1000, 0, 251, 55))
# More UI stuff
self.Visor = Render(self.widget_central)
self.Visor.setGeometry(QtCore.QRect(0, 0, 1000, 750))
# Even more stuff
ventana.setCentralWidget(self.widget_central)
QtCore.QMetaObject.connectSlotsByName(ventana)
ventana.setWindowTitle("Dibujo técnico")
ventana.show()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
ventana = QtWidgets.QMainWindow()
ui = UiVentana()
sys.exit(app.exec_())
必须重写^{} 方法并将focusPolicy属性设置为
Qt::StrongFocus
:加号:
相关问题 更多 >
编程相关推荐