网络巡检,合并两段代码,一是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", "终止巡检"))
仅供参考,望采纳。