Qtデザイナでインターフェイスを作成した場合、PythonアプリケーションでQtのOpenGLWidgetを使用するにはどうすればよいですか?PyOpenGLでPyQt5 .uiを使用する方法
0
A
答えて
0
あなたは(QtDesignerは、必要なすべてのコントロールおよびOpenGLウィジェットで.uiファイルを作成して使用してPyOpenGL、PyQt5、Qt5エディタ(私たちはIDEを必要としませんが、我々はそれに付属しているのQt Designerを必要とする)
をインストールしている必要がありますPythonであなたがウィジェットのオブジェクトにアクセスするには、この名前を使用しますので、このファイルtest.ui)、適切 名をウィジェットに名前を付け、あなたが あなたのOpenGLウィジェットは「openGLWidget」
命名する必要があるファイルの.pyと同じディレクトリに置きimport OpenGL.GL as gl
import OpenGL.GLU as glu
import OpenGL.GLUT as glut
from PyQt5 import QtWidgets as qWidget
from PyQt5 import QtGui as qGui
from PyQt5 import QtCore as qCore
from PyQt5 import uic
import sys
import os
class mainWindow(qWidget.QMainWindow):
"""Main window class."""
def __init__(self, *args):
"""Init."""
super(mainWindow, self).__init__(*args)
ui = os.path.join(os.path.dirname(__file__), 'test.ui')
uic.loadUi(ui, self)
def setupUI(self):
print("\033[1;101m SETU6P UI \033[0m")
self.windowsHeight = self.openGLWidget.height()
self.windowsWidth = self.openGLWidget.width()
self.openGLWidget.initializeGL()
self.openGLWidget.resizeGL(self.windowsWidth, self.windowsHeight)
self.openGLWidget.paintGL = self.paintGL
self.openGLWidget.initializeGL = self.initializeGL
def paintGL(self):
self.loadScene()
glut.glutWireSphere(2, 13, 13)
def initializeGL(self):
print("\033[4;30;102m INITIALIZE GL \033[0m")
gl.glEnable(gl.GL_BLEND)
gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
gl.glEnable(gl.GL_DEPTH_TEST)
def loadScene(self):
gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.glLoadIdentity()
x, y, width, height = gl.glGetDoublev(gl.GL_VIEWPORT)
glu.gluPerspective(
45, # field of view in degrees
width/float(height or 1), # aspect ratio
.25, # near clipping plane
200, # far clipping plane
)
gl.glMatrixMode(gl.GL_MODELVIEW)
gl.glLoadIdentity()
glu.gluLookAt(12, 12, 12, 0, 0, 0, 0, 1, 0)
app = qWidget.QApplication(sys.argv)
window = mainWindow()
window.setupUI()
window.show()
sys.exit(app.exec_())
この時点で、すべての要素を含むGUIウィンドウが表示されますあなたは配置し、中心に白い球が表示されたopenGLwidget すべてのOpenGl instrumentatorを使用して、独自の3Dアプリケーションを作成できます。 マウス入力とインタラクションの場合、Qt5のウィジェット機能を使用できます Qt5イベントを使用する必要がある場合は、mainWindowクラスの新しい関数を定義するために "on_widgetName_clicked"を使用する必要があります。それはすべての問題
Python code
なくても、このイベントはGUIで発生している時はいつでも PyOpenGl機能は、このテンプレートでは、100%づけしている、とあなたは、デフォルトのバージョン(C/C++)専用のチュートリアルを使用することができます動作します.uiファイルをtest.uiとして保存します。
関連する問題
- 1. PyQt5アプリケーションの最小限のPyOpenGLの例
- 2. PyOpenGLでgluLookAtを使用するには?
- 3. pyqt5 webenginewidgetsを使用してファイルをダウンロードする方法
- 4. Python PyQt5:PyQt5でエラーメッセージを表示する方法
- 5. PyOpenGLをPython 3.5.2用フリーガラスでセットアップする
- 6. PyQt5でdataChangedを発行する方法
- 7. jquery ui alertを使用する方法
- 8. PyOpenGLでpboにテクスチャをコピーする方法は?
- 9. PyOpenGLプログラムでFreeGLUT glutMouseWheelFuncを使用するには?
- 10. MacPortsでPyOpenGLをインストールする
- 11. Pyopenglテッセレーションポリゴン
- 12. PythonとPyOpenGLでVBOを動作させる方法
- 13. クラスとpyopenglを使用して異なる軸で2つのワイヤフレームキューブを回転する方法
- 14. 同じウィンドウをコールバックする方法! PYQT5
- 15. pyqt5をdebian strectにインストールする方法
- 16. pyopenglセットマルチテクスチャブレンディングモード
- 17. アンドロイドでUIを開発したときにネイティブUIを使用する方法
- 18. MatplotlibグラフをUIに埋め込むPyQt5
- 19. UIアプリケーションがPyQt5をロードしない
- 20. angle ui-routerをwebpackで使用する方法は?
- 21. iOSでAssistiveTouch UIを使用する方法
- 22. 角度UIブートストラップのポップオーバーで$ uibTooltipProviderを使用する方法
- 23. UWPバックグラウンドタスクでXAML UI要素を使用する方法?
- 24. jQuery UIダイアログでasp.NETボタンを使用する方法は?
- 25. スープUIでMicrosoft Dynamics CRMを使用する方法
- 26. ナンバースクリプトアングルアプリでCOVALENT UIを使用する方法
- 27. ReactとASP.netでMaterial-UIを使用する方法MVC
- 28. AureliaでJQuery-UIを使用する方法
- 29. Vue単一ファイルコンポーネントでOnsen UI tabbarを使用する方法
- 30. ng2-ui/mapでsetboundsを使用する方法
@voiDnyxまあ、はい。何かこれに間違っている?これは自分自身を理解するのにかなり時間がかかりました。私も同様の質問をしていないので、私はこれを投稿すれば誰かにとって役に立ちそうだと思いました。 – Kamanji