Как подключить множество кнопок к одному методу в PyQt?

Есть 21 кнопка, конечно можно прописывать:

pushButton.clicked.connect(self.run) 

к каждой кнопке, но мне кажется что есть способ лучше.

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(480, 720)
        MainWindow.setMinimumSize(QtCore.QSize(480, 720))
        MainWindow.setMaximumSize(QtCore.QSize(480, 720))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lcdNumber = QtWidgets.QLCDNumber(self.centralwidget)
        self.lcdNumber.setGeometry(QtCore.QRect(0, 0, 480, 150))
        self.lcdNumber.setMinimumSize(QtCore.QSize(480, 150))
        self.lcdNumber.setObjectName("lcdNumber")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(360, 150, 120, 111))
        self.pushButton_2.setMinimumSize(QtCore.QSize(120, 0))
        self.pushButton_2.setMaximumSize(QtCore.QSize(120, 114))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiLight")
        font.setPointSize(22)
        font.setBold(True)
        font.setItalic(False)
        font.setUnderline(False)
        font.setWeight(75)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        self.buttonGroup = QtWidgets.QButtonGroup(MainWindow)
        self.buttonGroup.setObjectName("buttonGroup")
        self.buttonGroup.addButton(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(240, 150, 120, 111))
        self.pushButton_3.setMinimumSize(QtCore.QSize(120, 0))
        self.pushButton_3.setMaximumSize(QtCore.QSize(120, 114))
        font = QtGui.QFont()
        font.setFamily("Bahnschrift SemiLight")
        font.setPointSize(22)
        font.setBold(True)
        font.setItalic(False)
        font.setUnderline(False)
        font.setWeight(75)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setObjectName("pushButton_3")
        self.buttonGroup.addButton(self.pushButton_3)

Ответы (1 шт):

Автор решения: S. Nick

То, что вы задумали, может выглядеть примерно так:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.centralwidget = QtWidgets.QWidget()        
        self.setCentralWidget(self.centralwidget)
        
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        
        self.lcdNumber = QtWidgets.QLCDNumber()
        self.lcdNumber.setMinimumHeight(70)
        self.lcdNumber.display('')
        
        self.buttonGroup = QtWidgets.QButtonGroup(self)
        self.buttonGroup.buttonClicked[QAbstractButton].connect(self.set_label)
        
        num = 21                         # попробуйте задать другое значение 
        column = 4                       # попробуйте задать другое значение 
        self.gridLayout.addWidget(self.lcdNumber, 0, 0, 1, column)
        
        for step in range(num):
            pushButton = QtWidgets.QPushButton(f'{step}')
            pushButton.setMinimumSize(QtCore.QSize(50, 50))
            pushButton.setMaximumSize(QtCore.QSize(50, 50))
            pushButton.setFocusPolicy(QtCore.Qt.NoFocus)
            self.buttonGroup.addButton(pushButton)
            self.gridLayout.addWidget(pushButton, step // column+1, step % column)

        self.label = QLabel()
        self.gridLayout.addWidget(self.label, step+1, 0, 1, column)

    def set_label(self, button):
        num = button.text()
        self.label.setText(f'Вы нажали кнопку с текстом <b>{num}<\b>')
        self.lcdNumber.display(num)
      
        
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.resize(200, 400)
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка