PyQT button clicked name

I have dynamically created buttons(QtoolButton) in gridLayout in pyQT. How can I get the name of the button clicked in the layout?

I can't know the name before hand. Is there is any trigger to accomplish the task?

Thanks in advance.


You can call self.sender() in a function connected to your button event to get the object that triggered the event. From there you can call the object's objectName() method to get the name.

Here's a quick example - the widget has 10 buttons and clicking on a button will update the label's text to show the button name.

import sys
from PyQt4.QtGui import QApplication, QWidget, QToolButton, QLabel, QVBoxLayout, QHBoxLayout

class Widget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        self.button_layout = QHBoxLayout()
        self.widget_layout = QVBoxLayout()

        for button_number in xrange(1, 11):
            button = QToolButton()
            button.setObjectName('Button%d' % button_number)

        self.status_label = QLabel('No button clicked')


    def button_released(self):
        sending_button = self.sender()
        self.status_label.setText('%s Clicked!' % str(sending_button.objectName()))

if __name__ == '__main__':
  app = QApplication(sys.argv)

  widget = Widget()


I think you have to implement your iconlabel class derived from QToolButton: Like This:

class IconLabel : public QToolButton
    explicit IconLabel(QWidget *parent = 0);
    bool event (QEvent* e );
    QString name;
    void clicked_signal(QString);


bool IconLabel::event (QEvent* e ) {
   if ( e->type() == QEvent::Paint) {
      return QToolButton::event(e);

   if(e->type() == QEvent::MouseButtonPress)

       emit clicked_signal(name);
       return true;

   return true;

connect(iconlabel, SIGNAL(clicked_signal(QString)), this, SLOT(getClickedButtonName(QString)));

Need Your Help

Deleting Elements in an Array if Element is a Certain value VBA

arrays excel vba element

I have a global array, prLst() that can of variable length. It takes in numbers as strings "1" to Ubound(prLst). However, when the user enters "0", I want to delete that element from the list. I...

How to create named and latest tag in Docker?

docker tags

Supposed I have an image that I want to tag as 0.10.24 (in my case it's an image containing Node.js 0.10.24). I built that image using a Dockerfile and executing docker build and by providing a tag...