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

Есть 2 значения одно русское другое его аналог на английском. При выборе в QComboBox русское значения в http запрос вставляется его английский аналог.

Далее результат запроса выводится в Qlabel Как правильно передавать/вставлять в http ссылку результат выбора ?

...
def comboBox(self):
        self.ui.comboBox.addItems([ k for k in data2 ])
        self.ui.comboBox.activated[str].connect(self.onActivated)
     
def onActivated(self,text):
    r2 = requests.get('https://iss.moex.com/iss/engines/stock/markets/shares/securities/.json?iss.meta=off&iss.only=marketdata&marketdata.columns=LAST')
    pricesale = (r2.json()['marketdata']['data'][1][0])
    self.ui.label.setText(pricesale)
    self.ui.label.adjustSize()     
...

Вычитал что для запросов нужна отдельная конструкция но не уверен что мне нужно именно это


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

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

Приложение может выглядеть примерно так:

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()
        self.price = QLabel()
        
        layout = QGridLayout(self)
        layout.addWidget(self.label, 0, 0)
        layout.addWidget(self.price, 0, 1)
        layout.addWidget(self.comboBox, 1, 0, 1, 2)
        
    def onActivated(self, text):
        _text = self.data[text]
        self.label.setText(_text)
        
        r2 = requests.get('https://iss.moex.com/iss/engines/stock/markets/shares/securities/.json?iss.meta=off&iss.only=marketdata&data')
        pricesale = r2.json()['marketdata']['data']

        _price = ''
        for n in pricesale:
            if n[0] == _text:
                if n[2]:
                    _price = n[2]         # установите индекс той цены, кот. вам нужна
                else:
                    _price = 'нет цены'
                break        
        if _price:
            self.price.setText(str(_price))
        

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_())

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


Но не понял какую цену надо выбрать, поэтому определитесь сами какая цена вам нужна. Вот вам в помощь:

import requests

text = 'AFLT'

r2 = requests.get('https://iss.moex.com/iss/engines/stock/markets/shares/securities/.json?iss.meta=off&iss.only=marketdata&data')
pricesale = r2.json()['marketdata']['data']

for n in pricesale:
    if n[0] == text:
        #print(*n, sep='\n')
        print(n)
        if n[2]:
            print(f'{n[0]} -> {n[2]}')
        else:
            print(f'{n[0]} -> нет цены')
        break
→ Ссылка