adding context QMenu to left click on a button in PySide

379 views
Skip to first unread message

san

unread,
Jan 10, 2013, 4:20:25 AM1/10/13
to pyqt-...@googlegroups.com

 i am stuck at adding context menu on left click over a button not the right click


    from PySide import QtCore,QtGui
    import sys
    class ToolBarUI(QtGui.QWidget):
        def __init__(self,*args,**kwargs):
            super(ToolBarUI,self).__init__(*args,**kwargs)
            self.createActions()
   
            self.floatingToolBar()
            pass
   
        def sizeHint(self):
            return QtCore.QSize(65,45)
   
        def buttons(self):
            x,y=15,35
            self.btnVLay=QtGui.QVBoxLayout(self)
            self.setLayout(self.btnVLay)
            self.btnVLay.setContentsMargins(0,0,0,0)
   
            self.incSavbtn=QtGui.QPushButton("Save")
            self.incSavbtn.setMinimumSize(QtCore.QSize(x,y))
            self.emailbtn=QtGui.QPushButton("Email")
            self.emailbtn.setMinimumSize(QtCore.QSize(x,y))
            self.upldbtn=QtGui.QPushButton("Upload")
            self.upldbtn.setMinimumSize(QtCore.QSize(x,y))
            self.setPrjbtn=QtGui.QPushButton("Set Project")
            self.setPrjbtn.setMinimumSize(QtCore.QSize(x,y))
            self.setThumb=QtGui.QPushButton("Set thumb")
            self.setThumb.setMinimumSize(QtCore.QSize(x,y))
            self.shwMatbtn=QtGui.QPushButton("Show Material")
            self.shwMatbtn.setMinimumSize(QtCore.QSize(x,y))
            self.fixtexbtn=QtGui.QPushButton("Fix Texture Paths")
            self.fixtexbtn.setMinimumSize(QtCore.QSize(x,y))
   
            btns = [self.incSavbtn,self.emailbtn,self.upldbtn,self.setPrjbtn,self.setPrjbtn,self.setThumb,self.shwMatbtn,self.fixtexbtn]
   
            [self.btnVLay.addWidget(each) for each in btns]
   
        def contextMenuEvent(self, event):
            menu = QtGui.QMenu(self)
            menu.addAction(self.emlSel)
            menu.addAction(self.emlScn)
            menu.addAction(self.emlBufr)
            #menu.exec_(self.emailbtn.mapToGlobal(QtCore.QPoint(0,0)))
            #menu.exec_(event.globalPos())
   
        def createActions(self):
   
            self.emlSel = QtGui.QAction("Email Selected", self)
   
            self.emlScn = QtGui.QAction("Email this Scene", self)
   
            self.emlBufr = QtGui.QAction("Email Current Frame Buffer", self)
   
   
        def floatingToolBar(self):
            self.buttons()
            self.setLayout(self.btnVLay)
            self.show()
            pass
   
    if __name__ =='__main__':
   
        app = QtGui.QApplication(sys.argv)
   
        win = ToolBarUI()
        win.show()
        sys.exit(app.exec_())

I have commented out how i was trying in the contextMenuEvent method...
any idea how to make context menu work on left click over button, i have tried this way too..

            self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
            self.connect(self.emailbtn, QtCore.SIGNAL('customContextMenuRequested(const QPoint&)'), self.on_context_menu)
but this totaly doesnt shows the menu maybe its pyqt4 approach, is slightly different from pyside

zw g

unread,
Jan 10, 2013, 10:12:52 AM1/10/13
to san, pyqt-pyside
Why not try this below?

QPushButton.setMenu()
QPushButton.showMenu()

Gui



--
PyQt & PySide的交流信息:
 
QQ群号: 143061743
邮件列表: pyqt-...@googlegroups.com
---
您收到此邮件是因为您订阅了 Google 网上论坛的“PyQt & PySide”论坛。
要向此网上论坛发帖,请发送电子邮件至 pyqt-...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 pyqt-pyside...@googlegroups.com
通过以下网址访问此论坛:http://groups.google.com/group/pyqt-pyside?hl=zh-CN。
 
 

šãñ

unread,
Jan 10, 2013, 10:17:28 AM1/10/13
to zw g, pyqt-pyside
yes I tried this but I do not want this for a particular reason....
--

San's personal blog


Reply all
Reply to author
Forward
0 new messages