Как лучше реализовать изменение 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_())
