Нужно, чтобы при выборе одного варианта из QComboBox менялся текст в QLabel

Изучаю PyQt5, нужно, чтобы при выборе одного варианта из QComboBox менялся текст в QLabel


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

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

void QComboBox::textActivated(const QString &text)

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

textActivated была введена в Qt 5.14.

self.combo.textActivated.connect(self.label.setText) 

Для версии меньше Qt 5.14.

void QComboBox::activated(int index)

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


from PyQt5 import QtGui, QtCore, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        
        self.combo = QtWidgets.QComboBox() 
        self.combo.addItems(["Hello", "World", "?"])
        
        # textActivated была введена в Qt 5.14.
        # self.combo.textActivated.connect(self.onActivated) 
        
        self.combo.activated.connect(self.onActivated)
        
        self.label = QtWidgets.QLabel()
        
        layout = QtWidgets.QHBoxLayout(self)
        layout.addWidget(self.combo)
        layout.addWidget(self.label)

    def onActivated(self):
        text = self.combo.currentText()
        self.label.setText(text)
       

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

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

→ Ссылка