Как лучше реализовать изменение 8 лейблов, на каждый вариант из comboBox

У меня есть 8 label'ов и 18 вариантов comboBox.
На каждый из вариантов comboBox, мне необходимо изменять по 8 лейблов.

Ре знаю как это лучше реализовать на языке Python, используя библиотеку PyQt5, помогите пожалуйста.

создание combobox

        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(420, 40, 209, 50))
        self.comboBox.setStyleSheet("font: 75 15pt \"MS Shell Dlg 2\";")
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")


   def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate

        self.comboBox.setItemText(0, _translate("MainWindow", "секция 110"))
        self.comboBox.setItemText(1, _translate("MainWindow", "секция 210"))
        self.comboBox.setItemText(2, _translate("MainWindow", "секция 120"))
        self.comboBox.setItemText(3, _translate("MainWindow", "секция 220"))
        self.comboBox.setItemText(4, _translate("MainWindow", "секция 130"))
        self.comboBox.setItemText(5, _translate("MainWindow", "секция 230"))
        self.comboBox.setItemText(6, _translate("MainWindow", "секция 140"))
        self.comboBox.setItemText(7, _translate("MainWindow", "секция 240"))
        self.comboBox.setItemText(8, _translate("MainWindow", "секция 150"))
        self.comboBox.setItemText(9, _translate("MainWindow", "секция 250"))
        self.comboBox.setItemText(10, _translate("MainWindow", "секция 160"))
        self.comboBox.setItemText(11, _translate("MainWindow", "секция 260"))
        self.comboBox.setItemText(12, _translate("MainWindow", "секция 170"))
        self.comboBox.setItemText(13, _translate("MainWindow", "секция 270"))
        self.comboBox.setItemText(14, _translate("MainWindow", "секция 180"))
        self.comboBox.setItemText(15, _translate("MainWindow", "секция 280"))
        self.comboBox.setItemText(16, _translate("MainWindow", "секция 190"))
        self.comboBox.setItemText(17, _translate("MainWindow", "секция 290"))

запись лейблов

        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(230, 117, 105, 21))
        font = QtGui.QFont()
        font.setPointSize(9)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName("label")

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        self.label.setText(_translate("MainWindow", "Комната 131")) # менять текст Комната 131

Ответы (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.resize(400, 260)
        self.setStyleSheet("background-color: rgb(45, 45, 45);") 

        self.myDict = {
            '110': ['111', '112', '113', '114', '115', '116', '117', '118',],
            '210': ['211', '212', '213', '214', '215', '216', '217', '218',],
            '120': ['121', '122', '123', '124', '125', '126', '127', '128',],
            '220': ['221', '222', '223', '224', '225', '226', '227', '228',],            
            '130': ['131', '132', '133', '134', '135', '136', '137', '138',],
            '230': ['231', '232', '233', '234', '235', '236', '237', '238',],
            '140': ['141', '142', '143', '144', '145', '146', '147', '148',],
            '240': ['241', '242', '243', '244', '245', '246', '247', '248',],
            '150': ['151', '152', '153', '154', '155', '156', '157', '158',],
            '250': ['251', '252', '253', '254', '255', '256', '257', '258',],
            '160': ['161', '162', '163', '164', '165', '166', '167', '168',],
            '260': ['261', '262', '263', '264', '265', '266', '267', '268',],
            '170': ['171', '172', '173', '174', '175', '176', '177', '178',],
            '270': ['271', '272', '273', '274', '275', '276', '277', '278',],
            '180': ['181', '182', '183', '184', '185', '186', '187', '188',],
            '280': ['281', '282', '283', '284', '285', '286', '287', '288',],
            '190': ['191', '192', '193', '194', '195', '196', '197', '198',],
            '290': ['291', '292', '293', '294', '295', '296', '297', '298',],
        }        
        
        self.centralwidget = QtWidgets.QWidget()
        self.centralwidget.setObjectName("centralwidget")
        self.setCentralWidget(self.centralwidget)
        
        self.layout = QtWidgets.QGridLayout(self.centralwidget)
        self.layout.setContentsMargins(0, 0, 0, 0)

        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        
        for c in self.myDict.keys():
            self.comboBox.addItem(f"секция {c}")
        self.layout.addWidget(self.comboBox, 0, 1, 1, 2)
        
        row = 1
        column = 0
        self.labels = []
        for i, lbl in enumerate(self.myDict['110']): 
            label = QLabel(lbl, alignment = QtCore.Qt.AlignCenter) 
            label.setStyleSheet("background-color: rgb(245, 145, 45);")
            label.setFixedSize(70, 70)
            self.labels.append(label)
            
            column = i 
            if i > 3: 
                row = 2
                column = i - 4
            self.layout.addWidget(self.labels[i], row, column, 1, 1)

        self.comboBox.currentTextChanged.connect(self.current_text_changed)

    def current_text_changed(self, text):
        lbl = self.myDict[text[-3:]]
        for i, l in enumerate(self.labels):
            l.setText(lbl[i])


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    app.setFont(QtGui.QFont("Times", 12, QtGui.QFont.Bold))
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
    

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

→ Ссылка