Почему в цикле if значение QLabel не меняется?

Почему при обычном присвоении текста QLabel меняется:

self.label.setText('привет')  

А в цикле нет:

if self.ComboViborBluda.currentText() == 'Пицца': self.label.setText('привет')

Хочу написать программу, в которой есть QComboBox(ComboViborBluda) и QLabel (label_2). В комбобоксе есть несколько значений: Пицца, Гамбургер, Суши.

Нужно реализовать такую штуку:
Основываясь на выборе из ComboViborBluda менять текст в label_2

Грубый пример:
Если пользователь выбрал "Пицца" - Текст label_2 заменить на 'привет'
У меня не получается, причину объяснил выше.

Код:

import sys
from PyQt5 import QtCore, QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow

from first_project.project.design_project import Ui_MainWindow


class WayToTheDream(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.setupUi(self)

        self.setWindowTitle('Way To The Dream!')
        self.setFixedSize(1010, 800)
        self.NazvanieBluda.setGeometry(QtCore.QRect(280, 350, 180, 21))

        self.dish_lib()

    def dish_lib(self):
        if self.ComboViborBluda.currentIndex() == 'Гамбургер':
            self.label_2.setText('привет')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = WayToTheDream()
    ex.show()
    sys.exit(app.exec_())

design_project.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1010, 800)
        MainWindow.setStyleSheet("background-color: #F0F0F0;")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.ComboViborBluda = QtWidgets.QComboBox(self.centralwidget)
        self.ComboViborBluda.setGeometry(QtCore.QRect(60, 310, 211, 22))
        self.ComboViborBluda.setObjectName("ComboViborBluda")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.ComboViborBluda.addItem("")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(280, 370, 171, 131))
        self.label_2.setText("")
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1010, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.ComboViborBluda.setItemText(0, _translate("MainWindow", "*Блюдо не выбрано*"))
        self.ComboViborBluda.setItemText(1, _translate("MainWindow", "Гамбургер"))
        self.ComboViborBluda.setItemText(2, _translate("MainWindow", "Пицца"))
        self.ComboViborBluda.setItemText(3, _translate("MainWindow", "Салат \"Цезарь\""))
        self.ComboViborBluda.setItemText(4, _translate("MainWindow", "Салат \"Греческий\""))
        self.ComboViborBluda.setItemText(5, _translate("MainWindow", "Картошка Фри"))
        self.ComboViborBluda.setItemText(6, _translate("MainWindow", "Картошка по-деревенски (Айдахо)"))
        self.ComboViborBluda.setItemText(7, _translate("MainWindow", "Наггетсы"))
        self.ComboViborBluda.setItemText(8, _translate("MainWindow", "Крылышки"))
        self.ComboViborBluda.setItemText(9, _translate("MainWindow", "Соусы"))
        self.ComboViborBluda.setItemText(10, _translate("MainWindow", "Торт \"Тирамису\""))
        self.ComboViborBluda.setItemText(11, _translate("MainWindow", "Торт \"Наполеон\""))
        self.ComboViborBluda.setItemText(12, _translate("MainWindow", "Роллы"))
        self.ComboViborBluda.setItemText(13, _translate("MainWindow", "Суши"))
        

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

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

Чтобы получать быстрые и правильные ответы, вы должны предоставлять минимально-воспроизводимый пример, который демонстрирует проблему.

Если вы этого не делаете, то не понятно о каком цикле вы говорите.

Все что вам надо, это использовать сигнал, например activated():

self.comboBox.activated.connect(self.comboActivated)

Этот сигнал отправляется, когда пользователь выбирает элемент в поле со списком. Обратите внимание, что этот сигнал отправляется, даже если выбор не изменен. Если вам нужно знать, когда выбор действительно изменится, используйте сигнал currentIndexChanged() или currentTextChanged().

import sys
from PyQt5 import QtGui, QtCore, QtWidgets

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

        self.centralWidget = QtWidgets.QWidget()
        self.setCentralWidget(self.centralWidget)
        
        self.comboBox = QtWidgets.QComboBox()
        self.comboBox.addItems(["Сделайте свой выбор:", "Пицца", "Гамбургер", "Суши"])
        self.comboBox.activated.connect(self.comboActivated)
        
        self.label = QtWidgets.QLabel()
        
        layout = QtWidgets.QHBoxLayout(self.centralWidget)
        layout.addWidget(self.comboBox)
        layout.addWidget(self.label)
       
    def comboActivated(self):
        if self.comboBox.currentText() == 'Пицца': 
            self.label.setText(f'Привет `{self.comboBox.currentText()}`') 
        else:
            self.label.clear()


if __name__=='__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.resize(300, 100)
    window.show()
    sys.exit(app.exec_())

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


Update

вот подправленный ваш main.py

...

class WayToTheDream(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
#?        self.ui = Ui_MainWindow()                                    # убрать !!!
        self.setupUi(self)

        self.setWindowTitle('Way To The Dream!')
        self.setFixedSize(1010, 800)
#? NazvanieBluda        self.NazvanieBluda.setGeometry(QtCore.QRect(280, 350, 180, 21))

        #    comboViborBluda !!!
        self.ComboViborBluda.activated.connect(self.dish_lib)

#?        self.dish_lib()

    def dish_lib(self):
#        if self.ComboViborBluda.currentIndex() == 'Гамбургер':
        if self.ComboViborBluda.currentText() == 'Гамбургер':              # ! currentText
            self.label_2.setText('привет')
        else:                                                              # +++
            self.label_2.clear()                                           # +++

...

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

→ Ссылка