thanks! On Dec 7, 2:57 pm, Justin Israel <[email protected]> wrote: > Your QDialog has a function called mapToGlobal(), which is inherits because > its a subclass of QWidget. > mapToGlobal takes a point that is local to the current object and remaps it > to the global position. > > When your button calls that custom context menu slot, popup(), it passes it > the position (point) of where the > click occurred, so that you can popup your menu at that point. > Your menu has a method called exec_(), which will show the popup, start an > event loop, and block until the popup is done. > QMenu.exec_() takes a point as an argument of where to show the popup, so > we pass that global position into it. > exec_() will end once the popup closes. > > > > > > > > On Wed, Dec 7, 2011 at 1:37 PM, notanymike <[email protected]> wrote: > > 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
-- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
