私は過去数ヶ月間解決できなかった厄介な問題があります。基本的には、pyqtを呼び出して3次元の幾何データを表示するために、jupyter/ipythonノートブックを使用しています。これは)私がオブジェクトにアプリを初期化し、私はいくつかのポリゴンとポイントを追加した後、私は(ショーを呼び出す方法です:ipython/jupyterノートブックセルからPyQtウィジェットを更新する
class Figure(object):
'''
Main API functions
'''
def __init__(self):
print "... initializing canvas ..."
self.app = QApplication(sys.argv)
self.app.processEvents()
...
def show(self): #Show
self.GUI = GLWindow(data)
self.app.exec_()
私は継続的にウィジェットがノートブックのセルを更新/対話したいと思います。 (?)私はjupyterノートブックでshow()コマンドを呼び出した後、ノートブックの出力はキューに入れられ、ロックアウトされますようしかし、私はこれ以上のセルを実行したり、ウィジェットを更新することはできません。
#Initialize figure object inside the notebook
fig = plb.figure()
...
fig.show() #Locks out any further jupyter commands while widget on screen
fig.update() #Does not get executed until widget is closed
それは.SHOWですノートブックを介して呼び出される関数()は、Pythonカーネル(?)の制御を放棄しますが、それを元に戻す方法と、表示されているウィジェットに接続する方法は不明です。
マウスやキーボードのイベントがウィジェットと対話んが、ウィジェットのコード内にあるmouseMoveEventのような組み込み関数を()を使用します
class GLWindow(QtGui.QWidget):
def __init__(self, fig, parent=None):
QtGui.QWidget.__init__(self, parent)
self.glWidget = GLWidget(fig, parent=self)
...
class GLWidget(QtOpenGL.QGLWidget):
def __init__(self, fig, parent=None):
QtOpenGL.QGLWidget.__init__(self, parent)
...
def mouseMoveEvent(self, event):
buttons = event.buttons()
modifiers = event.modifiers()
dx = event.x() - self.lastPos.x()
dy = event.y() - self.lastPos.y()
...
私は、関連の提案に従うことを試みたが、私はしないでくださいウィジェットの外で接続やイベントを使用する方法を理解する。
何か助けていただければ幸いです。私はこれを修正しようと多くの時間を費やしましたが、恥ずかしいです。 Cat