как передать значение из QComboBox в QLabel Pyqt5
Есть ссылка:
r = requests.get('https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.json?iss.meta=off&iss.only=securities&securities.columns=SECNAME,SECID')
pricesale = (r.json()['securities']['data'])
по ней получаю значения из 2 столбцов (название на русском и его английский аналог) далее передаю русское название (через индекс [0]) в ComboBox и передаю то что было выбрано в Qlabel
def comboBox(self):
for i in pricesale:
self.ui.comboBox.addItem(str(i[0]))
self.ui.comboBox.activated[str].connect(self.onActivated)
Мне нужно передать в Qlabel английский вариант (индекс [1]) того что было выбрано а не русский
def onActivated(self,text):
self.ui.label.setText(text)
self.ui.label.adjustSize()
Как мне это сделать ?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
pricesale - это <class 'list'>:
[
['Абрау-Дюрсо ПАО ао', 'ABRD'],
['АФК "Система" ПАО ао', 'AFKS'],
...
]
data - это <class 'dict'>:
{
'Абрау-Дюрсо ПАО ао': 'ABRD',
'АФК "Система" ПАО ао': 'AFKS',
...
}
где 'русское название' - это ключ, который нужен для QComboBox,
а 'английское название' - это значение, которое нужно для QLabel.
Попробуйте так:
import sys
import requests
from PyQt5.Qt import *
class MyApp(QWidget):
def __init__(self, data):
super().__init__()
self.data = data
self.comboBox = QComboBox()
self.comboBox.addItems([ k for k in data ])
self.comboBox.activated[str].connect(self.onActivated)
self.label = QLabel()
layout = QGridLayout(self)
layout.addWidget(self.label)
layout.addWidget(self.comboBox)
def onActivated(self, text):
self.label.setText(self.data[text])
r = requests.get('https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.json?iss.meta=off&iss.only=securities&securities.columns=SECNAME,SECID')
pricesale = (r.json()['securities']['data'])
data = {i[0]: i[1] for i in pricesale}
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp(data)
ex.show()
sys.exit(app.exec_())
