I'm using PYQT5 to create a GUI to display buttons and labels, and I want an efficient way to create many of the same type but with different names. Currently, I have to copy paste the same code to make each individual button, so my code is unnecessarily long.
Here's what it looks like currently for 8 buttons:
def setupUi(self, HomeWindow):
if not HomeWindow.objectName():
HomeWindow.setObjectName(u"HomeWindow")
mydb = mc.connect(
host="localhost",
user="root",
password='mhm',
database="cinedeck")
cur = mydb.cursor()
q = "SELECT movie_name, movie_poster from movies"
cur.execute(q)
res = cur.fetchall()
self.resize(1920, 1080)
self.centralwidget = QtWidgets.QWidget(HomeWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.label = QLabel(self.centralwidget)
self.label.setObjectName(u"label")
self.label.setGeometry(QRect(-20, 10, 291, 101))
self.label.setPixmap(QPixmap(r"CineDeck\assets\logo.svg"))
self.label_2 = QLabel(self.centralwidget)
self.label_2.setObjectName(u"label_2")
self.label_2.setGeometry(QRect(0, 0, 1920, 150))
self.label_2.setStyleSheet(u"background-color: rgba(128, 0, 0, 1)")
self.label_7 = QLabel(self.centralwidget)
self.label_7.setObjectName(u"label_7")
self.label_7.setGeometry(QRect(0, 0, 19200, 9300))
self.label_7.setPixmap(
QPixmap(r"CineDeck\assets\pure-white-background-85a2a7fd.jpg"))
self.horizontalWidget = QWidget(self.centralwidget)
self.horizontalWidget.setObjectName(u"horizontalWidget")
self.horizontalWidget.setGeometry(QRect(330, 40, 561, 41))
self.horizontalLayout = QHBoxLayout(self.horizontalWidget)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.label_5 = QLabel(self.horizontalWidget)
self.label_5.setObjectName(u"label_5")
self.label_5.setStyleSheet(u"color: rgb(255, 255, 255);")
self.horizontalLayout.addWidget(self.label_5)
self.label_3 = QLabel(self.horizontalWidget)
self.label_3.setObjectName(u"label_3")
self.label_3.setStyleSheet(u"color: rgb(255, 255, 255);")
self.horizontalLayout.addWidget(self.label_3)
self.label_4 = QLabel(self.horizontalWidget)
self.label_4.setObjectName(u"label_4")
self.label_4.setStyleSheet(u"color: rgb(255, 255, 255);")
self.horizontalLayout.addWidget(self.label_4)
self.label_6 = QLabel(self.horizontalWidget)
self.label_6.setObjectName(u"label_6")
self.label_6.setStyleSheet(u"color: rgb(255, 255, 255);")
self.horizontalLayout.addWidget(self.label_6)
self._8b = QPushButton(self.centralwidget)
self._8b.setObjectName(u"label_8")
self._8b.setGeometry(QRect(20, 530, 230, 50))
self.label_8 = QLabel(self.centralwidget)
self.label_8.setObjectName(u"label_8")
self.label_8.setGeometry(QRect(20, 190, 230, 326))
self.label_8.setPixmap(
QPixmap("{}".format(res[0][1])).scaled(230, 326))
self._9b = QPushButton(self.centralwidget)
self._9b.setObjectName(u"label_8")
self._9b.setGeometry(QRect(380, 530, 230, 50))
self.label_9 = QLabel(self.centralwidget)
self.label_9.setObjectName(u"label_9")
self.label_9.setGeometry(QRect(380, 190, 230, 326))
self.label_9.setPixmap(
QPixmap("{}".format(res[1][1])).scaled(230, 325).scaled(230, 325))
self._10b = QPushButton(self.centralwidget)
self._10b.setObjectName(u"label_8")
self._10b.setGeometry(QRect(740, 530, 230, 50))
self.label_10 = QLabel(self.centralwidget)
self.label_10.setObjectName(u"label_10")
self.label_10.setGeometry(QRect(740, 190, 230, 326))
self.label_10.setPixmap(
QPixmap("{}".format(res[2][1])).scaled(230, 325).scaled(230, 325))
self._11b = QPushButton(self.centralwidget)
self._11b.setObjectName(u"label_8")
self._11b.setGeometry(QRect(1100, 530, 230, 50))
self.label_11 = QLabel(self.centralwidget)
self.label_11.setObjectName(u"label_11")
self.label_11.setGeometry(QRect(1100, 190, 230, 326))
self.label_11.setPixmap(
QPixmap("{}".format(res[2][1])).scaled(230, 325).scaled(230, 325))
self._12b = QPushButton(self.centralwidget)
self._12b.setObjectName(u"label_8")
self._12b.setGeometry(QRect(1460, 530, 230, 50))
self.label_12 = QLabel(self.centralwidget)
self.label_12.setObjectName(u"label_12")
self.label_12.setGeometry(QRect(1460, 190, 230, 326))
self.label_12.setPixmap(
QPixmap("{}".format(res[2][1])).scaled(230, 325).scaled(230, 325))
self._13b = QPushButton(self.centralwidget)
self._13b.setObjectName(u"label_8")
self._13b.setGeometry(QRect(20, 930, 230, 50))
self.label_13 = QLabel(self.centralwidget)
self.label_13.setObjectName(u"label_13")
self.label_13.setGeometry(QRect(20, 590, 230, 326))
self.label_13.setPixmap(
QPixmap("{}".format(res[3][1])).scaled(230, 325).scaled(230, 325))
self._13b = QPushButton(self.centralwidget)
self._13b.setObjectName(u"label_8")
self._13b.setGeometry(QRect(380, 930, 230, 50))
self.label_13 = QLabel(self.centralwidget)
self.label_13.setObjectName(u"label_13")
self.label_13.setGeometry(QRect(380, 590, 230, 326))
self.label_13.setPixmap(
QPixmap("{}".format(res[4][1])).scaled(230, 325).scaled(230, 325))
self._13b = QPushButton(self.centralwidget)
self._13b.setObjectName(u"label_8")
self._13b.setGeometry(QRect(740, 930, 230, 50))
self.label_13 = QLabel(self.centralwidget)
self.label_13.setObjectName(u"label_13")
self.label_13.setGeometry(QRect(740, 590, 230, 326))
self.label_13.setPixmap(
QPixmap("{}".format(res[5][1])).scaled(230, 325).scaled(230, 325))
self._13b = QPushButton(self.centralwidget)
self._13b.setObjectName(u"label_8")
self._13b.setGeometry(QRect(1100, 930, 230, 50))
self.label_13 = QLabel(self.centralwidget)
self.label_13.setObjectName(u"label_13")
self.label_13.setGeometry(QRect(1100, 590, 230, 326))
self.label_13.setPixmap(
QPixmap("{}".format(res[6][1])).scaled(230, 325).scaled(230, 325))
self._13b = QPushButton(self.centralwidget)
self._13b.setObjectName(u"label_8")
self._13b.setGeometry(QRect(1460, 930, 230, 50))
self.label_13 = QLabel(self.centralwidget)
self.label_13.setObjectName(u"label_13")
self.label_13.setGeometry(QRect(1460, 590, 230, 326))
self.label_13.setPixmap(
QPixmap("{}".format(res[7][1])).scaled(230, 325).scaled(230, 325))
HomeWindow.setCentralWidget(self.centralwidget)
self.label_7.raise_()
self.label_2.raise_()
self.label.raise_()
self.horizontalWidget.raise_()
self.label_8.raise_()
self.label_8.raise_()
self.label_9.raise_()
self.label_10.raise_()
self._8b.raise_()
self._9b.raise_()
#self._10b.raise_()
#self._10b.raise_()
#self._10b.raise_()
#self._10b.raise_()
#self._10b.raise_()
#self._10b.raise_()
#self._10b.raise_()
#self._10b.raise_()
#self._10b.raise_()
I have to create around 40-50 buttons, and they have the same properties. They only differ in names and the positioning in the UI (setGeometry(QtCore.QRect()). What's the best way to create this many buttons without just copy and pasting the same code 50 times and changing the name.
I'm not sure how a for loop would work, so any help would be appreciated.