У меня странная проблема с получением временных данных из API, делаю QLabel, который находится в другом классе, чем функция извлечения данных. Функция, которая извлекает данные из API, использует http и многопроцессорность для ускорения сбора данных.Но когда я запускаю этот Qlabel, появляется пустой текст. Можете ли вы помочь мне с этим?Я думаю, что многопроцессорность лучше всего подойдет для асинхронной выборки данных, и это не остановит работу всего моего приложения.
Вот мой код
@pyqtSlot(str)
def temp_pobierz(id):
call1 = multiprocessing.Process(target=temp_pobierz2, args=(id,), name='temp_pobierz2')
call1.start()
@pyqtSlot(str)
def temp_pobierz2(id):
username = "xxx"
password = "xxx"
config = ConfigParser()
config.read('config.ini')
top_level_url = "http://" + config['NETWORK']['IP'] + ":8060/api/xml/device/" + (id) + "/state"
# create an authorization handler
try:
p = urllib.request.HTTPPasswordMgrWithDefaultRealm()
p.add_password(None, top_level_url, username, password)
auth_handler = urllib.request.HTTPBasicAuthHandler(p)
opener = urllib.request.build_opener(auth_handler)
urllib.request.install_opener(opener)
result = opener.open(top_level_url)
messages = result.read()
xml2 = messages.decode('utf-8')
mydoc = minidom.parseString(xml2)
items = mydoc.getElementsByTagName('state')[0]
temp = (items.firstChild.data).strip()
print(temp)
return temp
except IOError as e:
print(e)
return "0.00"
class App(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(0, 30, 500, 500)
self.top = 0
self.left = 0
self.width = 1024
self.height = 600
self.setGeometry(self.left, self.top, self.width, self.height)
self.init_ui()
self.show()
def init_ui(self):
self.central_widget = QStackedWidget()
self.setCentralWidget(self.central_widget)
self.strona_temperatury = StronaTemperaturyOkno(self)
self.central_widget.addWidget(self.strona_temperatury)
self.central_widget.setCurrentWidget(self.strona_temperatury)
class StronaTemperatury(object):
clicked = pyqtSignal()
def strona_temperatury(self):
self.button = QPushButton('Wróć',self)
self.button.move(900,550)
self.button.clicked.connect(self.clicked.emit)
self.dwor_lb = QLabel("Na zewnątrz", self)
self.dwor_tp = QLabel("0.00", self)
self.salon_lb = QLabel("Salon", self)
self.salon_tp = QLabel("0.00", self)
self.biuro_lb = QLabel("Biuro", self)
self.biuro_tp = QLabel("0.00", self)
self.jadalnia_lb = QLabel("Jadalnia", self)
self.jadalnia_tp = QLabel("0.00", self)
self.wejscie_lb = QLabel("Wejście główne", self)
self.wejscie_tp = QLabel("0.00", self)
self.kuchnia_lb = QLabel("Kuchnia", self)
self.kuchnia_tp = QLabel("0.00", self)
self.pokoj_tesciowej_lb = QLabel("Pokój teściowej", self)
self.pokoj_tesciowej_tp = QLabel("0.00", self)
self.pokoj_lilki_lb = QLabel("Pokój Lilki", self)
self.pokoj_lilki_tp = QLabel("0.00", self)
self.wc_parter_lb = QLabel("WC Parter", self)
self.wc_parter_tp = QLabel("0.00", self)
self.sypialnia_lb = QLabel("Sypialnia", self)
self.sypialnia_tp = QLabel("0.00", self)
self.wc_pietro_lb = QLabel("WC Piętro", self)
self.wc_pietro_tp = QLabel("0.00", self)
self.przysienek_lb = QLabel("Przysienek", self)
self.przysienek_tp = QLabel("0.00", self)
self.dwor_lb.move(50,20)
self.dwor_tp.move(150,20)
self.salon_lb.move(50,50)
self.salon_tp.move(150,50)
self.biuro_lb.move(50,80)
self.biuro_tp.move(150,80)
self.jadalnia_lb.move(50,110)
self.jadalnia_tp.move(150,110)
self.wejscie_lb.move(50,140)
self.wejscie_tp.move(150,140)
self.kuchnia_lb.move(50,170)
self.kuchnia_tp.move(150,170)
self.pokoj_tesciowej_lb.move(50,200)
self.pokoj_tesciowej_tp.move(150,200)
self.pokoj_lilki_lb.move(50,230)
self.pokoj_lilki_tp.move(150,230)
self.wc_parter_lb.move(50,260)
self.wc_parter_tp.move(150,260)
self.sypialnia_lb.move(50,290)
self.sypialnia_tp.move(150,290)
self.wc_pietro_lb.move(50,320)
self.wc_pietro_tp.move(150,320)
self.przysienek_lb.move(50,350)
self.przysienek_tp.move(150,350)
self.salon_tp.setText(temp_pobierz("47"))
#self.dwor_tp.setText(temp_pobierz("49"))
#self.biuro_tp.setText(temp_pobierz("110"))
#self.jadalnia_tp.setText(temp_pobierz("19"))
#self.wejscie_tp.setText(temp_pobierz("132"))
#self.kuchnia_tp.setText(temp_pobierz("50"))
#self.pokoj_tesciowej_tp.setText(temp_pobierz("113"))
#self.pokoj_lilki_tp.setText(temp_pobierz("111"))
#self.wc_parter_tp.setText(temp_pobierz("21"))
#self.sypialnia_tp.setText(temp_pobierz("114"))
#self.wc_pietro_tp.setText(temp_pobierz("112"))
#self.przysienek_tp.setText(temp_pobierz("20"))
class StronaTemperaturyOkno(QWidget, StronaTemperatury):
def __init__(self, parent=None):
super(StronaTemperaturyOkno, self).__init__(parent)
self.strona_temperatury()
спасибо за вашу помощь