Yeah, I'm still unclear as to what's happening in the popup() function of the code. Specifically:
action = menu.exec_(self.mapToGlobal(pos)) I'm guessing it's just executing or generating the menu, but the extra _(self.mapToGlobal(pos)) I'm not sure how to use elsewhere... On Dec 6, 9:55 pm, Justin Israel <[email protected]> wrote: > You are making a simple dialog that only contains a pushbutton that is added > to a vertical layout. You set the context menu option to use a custom menu > instead of performing its own default action. And you connect a signal that > is emitted when your right click the button to a custom slot that creates a > popup menu and shows it. > Was there a specific area of the code you wanted more details about? > > On Dec 6, 2011, at 9:13 PM, notanymike <[email protected]> wrote: > > > > > > > > > I found a couple of tutorials and merged them and that seemed to work, > > though I still don't know how its working. Could anyone care to > > explain: > > > import sip > > import maya.cmds as cmds > > import maya.OpenMayaUI as mui > > from PyQt4.QtCore import * > > from PyQt4.QtGui import * > > > def getMayaWindow(): > > ptr = mui.MQtUtil.mainWindow() > > return sip.wrapinstance(long(ptr), QObject) > > > class Form(QDialog): > > > def __init__(self, parent=None): > > super(Form, self).__init__(parent) > > self.setObjectName('mainUI') > > self.mainLayout = QVBoxLayout(self) > > self.myButton = QPushButton('myButton') > > self.myButton.setContextMenuPolicy(Qt.CustomContextMenu) > > self.myButton.customContextMenuRequested.connect(self.popup) > > self.myButton.clicked.connect(self.selectJoint) > > self.mainLayout.addWidget(self.myButton) > > > def popup(self, pos): > > #for i in self.tv.selectionModel().selection().indexes(): > > # print i.row(), i.column() > > menu = QMenu() > > jointAction = menu.addAction("This is an action") > > action = menu.exec_(self.mapToGlobal(pos)) > > if action == jointAction: > > self.myjoint = cmds.joint() > > > def selectJoint(self): > > cmds.select(self.myjoint) > > > global app > > global form > > app = qApp > > form = Form(getMayaWindow()) > > form.show() > > > On Dec 2, 1:57 pm, Justin Israel <[email protected]> wrote: > >> Though this approach would make it a Menu button, activated from a normal > >> left click. > > >> On Fri, Dec 2, 2011 at 1:53 PM, David Moulder > >> <[email protected]>wrote: > > >>> Alternatively you could try > > >>> 1. QMenu <http://doc.qt.nokia.com/latest/qmenu.html> *menu = new > >>> QMenu<http://doc.qt.nokia.com/latest/qmenu.html> > >>> (this); > >>> 2. menu->addAction("Testaaaaaaaaaaaaaaaaaaaaa"); > >>> 3. menu->addAction("Test1"); > >>> 4. menu->addAction("Test2"); > >>> 5. > >>> 6. pushButton->setMenu(menu); > > >>> On Fri, Dec 2, 2011 at 9:47 PM, David Moulder > >>> <[email protected]>wrote: > > >>>> I'm not at python console to test this but from memory you need to set > >>>> the contextMenu property and then hook up the signal to slot to show your > >>>> menu. > > >>>> Qt::ContextMenuPolicy<http://doc.qt.nokia.com/latest/qt.html#ContextMenuPolicy-enum> > > >>>> and > > >>>> > >>>> customContextMenuRequested<http://doc.qt.nokia.com/latest/qwidget.html#customContextMenuRequested> > > >>>> Good luck. > > >>>> -Dave > > >>>> On Fri, Dec 2, 2011 at 9:13 PM, notanymike <[email protected]> wrote: > > >>>>> How can one make a drop-down command menu appear when right-clicking > >>>>> on a button in a Maya window using pyqt? > > >>>>> -- > >>>>> view archives:http://groups.google.com/group/python_inside_maya > >>>>> change your subscription settings: > >>>>>http://groups.google.com/group/python_inside_maya/subscribe > > >>>> -- > >>>> David Moulder > >>>>http://www.google.com/profiles/squish3d > > >>> -- > >>> David Moulder > >>>http://www.google.com/profiles/squish3d > > >>> -- > >>> view archives:http://groups.google.com/group/python_inside_maya > >>> change your subscription settings: > >>>http://groups.google.com/group/python_inside_maya/subscribe > > > -- > > view archives:http://groups.google.com/group/python_inside_maya > > change your subscription > > settings:http://groups.google.com/group/python_inside_maya/subscribe -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
