Я использую pyqt в autodesk maya. все работает, но когда я пытаюсь подключить контекстное меню к моим элементам - майя получает фатальную ошибку и закрывается.pyqt + maya = фатальная ошибка при нажатии на контекстное меню
import maya.OpenMayaUI as mui
import maya.api.OpenMaya as om
import sip
from PyQt4 import QtGui, QtCore, uic
#----------------------------------------------------------------------
def getMayaWindow():
ptr = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(ptr), QtCore.QObject)
#----------------------------------------------------------------------
form_class, base_class = uic.loadUiType('X:/tools/Maya/windows/2014/python/UI/perforceBrowserWnd.ui')
#----------------------------------------------------------------------
# main window class
#----------------------------------------------------------------------
class PerforceWindow(base_class, form_class):
def __init__(self, parent=getMayaWindow()):
super(base_class, self).__init__(parent)
self.setupUi(self)
# Popup Menu is not visible, but we add actions from above
self.popMenu = QtGui.QMenu(self)
self.popMenu.addAction("revert", self.on_action_revert)
self.popMenu.addAction("submit", self.on_action_submit)
self.filesListWgt.customContextMenuRequested.connect(self.filesListWgtMenuRequested)
#------------------------------------------------------------------
def filesListWgtMenuRequested(self, pos):
self.popMenu.exec_(self.filesListWgt.mapToGlobal(pos))
def on_action_revert(self):
print('on_action_revert')
def on_action_submit(self):
print('on_action_submit')
#----------------------------------------------------------------------
# window
#----------------------------------------------------------------------
def perforceBrowser2():
perforceBrowserWnd = PerforceWindow()
perforceBrowserWnd.show()
perforceBrowser2()
диалог, созданный в qtdesigner. Я устанавливаю атрибут contentMenuPolicy в дизайнере в QListWidtet. когда я нажимаю правой кнопкой мыши на QListWidtet или любой элемент - я вижу контекстное меню. но если я нажму меню или увожу его - майа получит фатальную ошибку
и я вижу текст журнала - функция on_action_revert вызывается. но после этого майя разбилась.
что я делаю неправильно?
обновление:
я попробовать простой тест. заменить меню простой вызов функции:
заменить подключения к:
self.filesListWgt.customContextMenuRequested.connect(self.on_action_revert)
def on_action_revert(self):
print('on_action_revert')
это крах майа слишком
Какую версию майя вы тестируете? – kartikg3
Autodesk Maya 2014 – MaxKu
Есть ли конкретная причина, по которой вы решили использовать pyqt над pyside, который поставляется с Maya 2014? – kartikg3