Проверка доступности узла по ip в PyQt5

Подскажите куда копать, есть GUI программа с QLabel, пытаюсь проверять в фоне программы доступность узла и вывести результат в метку.
Только нужно чтобы проверка была постоянна, пока работает приложение.

main.py

import sys  
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QMessageBox
from PyQt5.QtGui import *
import design13_ping       # Это наш конвертированный файл дизайна

import os
import telnetlib
import schedule
import time


class ExampleApp(QtWidgets.QMainWindow, design13_ping.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)  # Это нужно для инициализации нашего дизайна

    def job(self):
        Ping = os.system("ping -c 1 " + "192.168.6.15")
        if Ping == 0:
            self.lbl.setText("yes")
            #print('no')
        else:
            self.lbl.setText("no")
            #print('yes')
                    

    schedule.every(2).seconds.do(job)
    while True:
        schedule.run_pending()
        time.sleep(1)  


def main():
    app = QtWidgets.QApplication(sys.argv)  
    window = ExampleApp()  
    window.show()  
    app.exec_()  

if __name__ == '__main__':  
    main()  

design13_ping.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(599, 140)
        #MainWindow.setFixedSize(599, 140)
        MainWindow.setAnimated(True)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.layoutWidget.setGeometry(QtCore.QRect(10, 10, 581, 41))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")

        self.lbl=QtWidgets.QLabel(self.centralwidget)
        self.lbl.setText("asdf")
        
        #self.layoutWidget.addWidget(self.lbl)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", " "))

Update

Не подскажете как применить вот эту часть кода в process.start

self.r = requests.get("http://192.168.6.15") 
        self.view=self.r.status_code
        if view==200:
            self.setWindowTitle("Подключен к узлу 1")
            

        else:
            self.setWindowTitle("Не подключен к узлу 1")

мне нужно чтоб в программе было если узел доступен то надпись ПОДКЛЮЧЕН, если нет то НЕТ, программа будет сутками работать (аля мониторинг за датчиками) вот будет не совсем удобно если пинги будут сутками идти, а так я бы просто таймер поставил чтоб раз в пол часа проверял доступ и выводил ПОДКЛЮЧЕН или НЕТ


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

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

Попробуйте так:

import sys
from PyQt5.Qt import *


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        centralWidget = QWidget()                    
        self.setCentralWidget(centralWidget)
        
        self.runButton = QPushButton('Start')
        self.runButton.clicked.connect(self.callProgram)

        self.textEdit = QTextEdit()

        layout = QHBoxLayout(centralWidget)
        layout.addWidget(self.textEdit)
        layout.addWidget(self.runButton)

        # Объект QProcess для внешнего приложения
        self.process = QProcess(self)
        # QProcess выдает `readyRead`, когда есть данные для чтения !!!
        self.process.readyRead.connect(self.dataReady)
        
        self.timer = QTimer(self, interval=5000)    # установите нужный вам интервал
        self.timer.timeout.connect(self.on_timeout)

    def dataReady(self):
        cursor = self.textEdit.textCursor()
        cursor.movePosition(cursor.End)
        cursor.insertText( self.process.readAll().data().decode("cp866") )  
        self.textEdit.ensureCursorVisible()
        
    def on_timeout(self): 
        # запустить процесс
        # `start` принимает exec и список аргументов
        #self.process.start('ping', ['127.0.0.1'])
        self.process.start('ping', ['ru.stackoverflow.com'])    

    def callProgram(self):
        if self.runButton.text()  == 'Start':
            self.runButton.setText('Stop')
            self.timer.start()
        else:
            self.timer.stop()
            self.runButton.setText('Start')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.resize(600, 300)
    w.show()
    sys.exit(app.exec_())

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

→ Ссылка