网络巡检,实现UI界面

网络巡检,合并两段代码,一是UI界面,二是网络巡检DOS程序代码。
目的是合并两段代码,实现UI界面展示,把网络巡检DOS程序中print的内容动态输出在textBrowser中展示。
增加终止按钮操作,中断检测。
一是UI界面

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'pyqt5036.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_wlxj(object):
    def setupUi(self, wlxj):
        wlxj.setObjectName("wlxj")
        wlxj.resize(600, 300)
        self.textBrowser = QtWidgets.QTextBrowser(wlxj)
        self.textBrowser.setGeometry(QtCore.QRect(0, 0, 511, 301))
        self.textBrowser.setObjectName("textBrowser")
        self.pushButton = QtWidgets.QPushButton(wlxj)
        self.pushButton.setGeometry(QtCore.QRect(520, 200, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(wlxj)
        self.pushButton_2.setGeometry(QtCore.QRect(520, 250, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")

        self.retranslateUi(wlxj)
        self.pushButton.clicked.connect(self.textBrowser.backward)
        self.pushButton_2.clicked.connect(self.textBrowser.backward)
        QtCore.QMetaObject.connectSlotsByName(wlxj)

    def retranslateUi(self, wlxj):
        _translate = QtCore.QCoreApplication.translate
        wlxj.setWindowTitle(_translate("wlxj", "网络巡检"))
        self.pushButton.setText(_translate("wlxj", "打开文件"))
        self.pushButton_2.setText(_translate("wlxj", "终止巡检"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    wlxj = QtWidgets.QWidget()
    ui = Ui_wlxj()
    ui.setupUi(wlxj)
    wlxj.show()
    sys.exit(app.exec_())


二是网络巡检DOS程序代码


```python
#pyexcle026.py 查看Excel表中的IP地址是否能ping通
import os,time
import tkinter as tk
from tkinter import filedialog
from openpyxl import load_workbook

class myClass():
    def Pbook(self):
        self.root = tk.Tk('选择Excel文件路径')
        self.root.title('网络巡检')
        self.root.geometry('600x200')
        self.root.withdraw()
        self.Filepath = filedialog.askopenfilename()
        self.workbook = load_workbook(self.Filepath)
        self.sheet = self.workbook['Sheet1']
        self.i = 2
        self.cgzs = 0
        self.sbzs = 0
        for row in list(self.sheet.values)[1:]:
            print(row)
            self.ip = str(row[0])
            return1 = os.system('ping -n 1 -w 1 %s' % self.ip)
            if return1:
                print('ping %s is fail' % self.ip)
                self.sheet.cell(self.i, 2, value='失败')
                self.sbzs = self.sbzs + 1
            else:
                print('ping %s is ok' % self.ip)
                self.sheet.cell(self.i, 2, value='成功')
                self.cgzs = self.cgzs + 1
            self.i = self.i + 1
        self.end_Time = int(time.time())
        print("ping通的ip数:", self.cgzs, "   ping不通的ip数:", self.sbzs)
        self.workbook.save(self.Filepath)
        self.window.mainloop()


if __name__ == '__main__':
    main1 = myClass().Pbook()


网络地址表格Excel文件内容如下(可以根据实际情况修改网址):

网址       网络状态
192.168.1.1    成功
192.168.1.2    失败
...............

def setupUi(self, wlxj):
    wlxj.setObjectName("wlxj")
    wlxj.resize(600, 300)
    self.textBrowser = QtWidgets.QTextBrowser(wlxj)
    self.textBrowser.setGeometry(QtCore.QRect(0, 0, 511, 301))
    self.textBrowser.setObjectName("textBrowser")
    self.pushButton = QtWidgets.QPushButton(wlxj)
    self.pushButton.setGeometry(QtCore.QRect(520, 200, 75, 23))
    self.pushButton.setObjectName("pushButton")
    self.pushButton.clicked.connect(self.start_inspection)
    self.pushButton_2 = QtWidgets.QPushButton(wlxj)
    self.pushButton_2.setGeometry(QtCore.QRect(520, 250, 75, 23))
    self.pushButton_2.setObjectName("pushButton_2")
    self.pushButton_2.clicked.connect(self.stop_inspection)

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

def start_inspection(self):
    # network inspection code here
    for i in range(10):
        time.sleep(1)
        self.textBrowser.insertPlainText("checking...\n")
        # check if the "Stop Inspection" button has been clicked
        if self.stop_inspection_flag:
            break

def stop_inspection(self):
    self.stop_inspection_flag = True

def retranslateUi(self, wlxj):
    _translate = QtCore.QCoreApplication.translate
    wlxj.setWindowTitle(_translate("wlxj", "网络巡检"))
    self.pushButton.setText(_translate("wlxj", "开始巡检"))
    self.pushButton_2.setText(_translate("wlxj", "终止巡检"))

仅供参考,望采纳。