Как через кнопки QComboBox добавить текст QTextBrowser и QLabel

Нужно что бы при нажатии на кнопки в QComboBox добавлялся текст в QTextBrowser и QLabel.

from PyQt5 import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

app = QApplication(sys.argv)

mywindow = QWidget()
mywindow.resize(250, 150)

text_browser = QTextEdit()
text_browser.setHtml('h')
cursor = text_browser.textCursor()
cursor.setPosition(2000)

items = ['1', '2', '3']

combobox = QComboBox()
combobox.addItems(items)


box = QVBoxLayout()
box.addWidget(text_browser)
box.addWidget(combobox)

mywindow.setLayout(box)
mywindow.setWindowTitle('My Window')
mywindow.show()

sys.exit(app.exec_())

Проблема в том, что количество кнопок динамично и на каждую кнопку нужно назначить свою команду добавления текста в QTextBrowser и QLabel из-за будущей связи с базой данных.


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

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

void QComboBox::textActivated(const QString &text)

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

import sys
from PyQt5.Qt import *


class MyWindow(QWidget):
    def __init__(self):
        super().__init__() 
        
        self.label = QLabel()

        self.text_browser = QTextEdit()
        self.text_browser.setHtml('Hellow QTextEdit')
        
        items = ['Item 1', 'Item 2', 'Item 3']
        self.combobox = QComboBox()
        self.combobox.addItems(items)
        self.combobox.textActivated.connect(self.cb_activate)        # !!! +++
        
        layout = QVBoxLayout(self)
        layout.addWidget(self.label)
        layout.addWidget(self.text_browser)
        layout.addWidget(self.combobox) 

    def cb_activate(self, text):                                      # !!! +++
        self.label.setText(text)
        self.text_browser.append(text)
        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = MyWindow()
    w.resize(500, 300)
    w.setWindowTitle('My Window')
    w.show()
    sys.exit(app.exec())  

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

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

→ Ссылка