У меня есть раздражающая проблема, которую я не смог решить за последние несколько месяцев. В принципе, я использую jupyter/ipython notebook для вызова pyqt и отображения трехмерных геометрических данных. Это, как я инициализировать приложение в объект и после того, как я добавить некоторые многоугольники и точки, я называю шоу():Обновление виджета PyQt через ящики для ipython/jupyter
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 ноутбук я не могу больше бежать клетки или обновлять виджет, как выход ноутбука получает в очередь и блокируется (?):
#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