Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add right-click functionality to listwidget in PyQt4

Im trying to add right-click functionality to items in a list widget in PyQt4 using Python. Id like a pop up context menu to show that has buttons and when clicked should perform some function.

How do I get a context menu to pop up when right clicking on each of the items?

like image 904
RicDavimes Avatar asked Jan 20 '26 15:01

RicDavimes


1 Answers

I have come up with a pretty simple way of doing this and works perfectly. In the ControlMainWindow class add the following to initialise the Context menu policy as CustomeContextMenu where listWidget_extractedmeters will be the name of your QListWidget:

    self.listWidget_extractedmeters.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.listWidget_extractedmeters.connect(self.listWidget_extractedmeters,QtCore.SIGNAL("customContextMenuRequested(QPoint)" ), self.listItemRightClicked)

Then in the ControlMainwindow class the following functions allow you to add context menu items and to call a funtion that performs some functionality:

def listItemRightClicked(self, QPos): 
    self.listMenu= QtGui.QMenu()
    menu_item = self.listMenu.addAction("Remove Item")
    self.connect(menu_item, QtCore.SIGNAL("triggered()"), self.menuItemClicked) 
    parentPosition = self.listWidget_extractedmeters.mapToGlobal(QtCore.QPoint(0, 0))        
    self.listMenu.move(parentPosition + QPos)
    self.listMenu.show() 

def menuItemClicked(self):
    currentItemName=str(self.listWidget_extractedmeters.currentItem().text() )
    print(currentItemName)
like image 78
RicDavimes Avatar answered Jan 23 '26 07:01

RicDavimes



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!