Как передать значение из 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
