用python实现ping并实现简单GUI并保存为word文档

  • 主页 /
  • 行业资讯 /
  • 行业资讯

用python实现ping并实现简单GUI并保存为word文档

用python实现ping并实现简单GUI并保存为word文档

 

1、python实现ping

实现ping百度

def local():a = os.popen('ping www.baidu.com -n 1').read()nowTime = datetime.datetime.now()nowTime = str(nowTime)nowTime = nowTime[:-7]a = re.compile(r'来自..+', re.M).findall(a)a = "".join(a).replace("[", "").replace("]", "").replace("'", "")return nowTime + ":" + a

ping任意网址

def appoint_ip(ip):a = os.popen('ping %s -n 1' % ip).read()nowTime = datetime.datetime.now()nowTime = str(nowTime)nowTime = nowTime[:-7]a = re.compile(r'来自..+', re.M).findall(a)a = "".join(a).replace("[", "").replace("]", "").replace("'", "")return nowTime + ":" + a

2、pyqt5构建简单GUI

工作线程

class Worker(QThread):sinOut = pyqtSignal(str)def __init__(self, parent=None):super(Worker, self).__init__(parent)self.working = Trueself.num = 0def __del__(self):self.working = Falseself.wait()def run(self):while self.working == True:file_str = 'File index {0}'.format(self.num)self.num += 1# 发出信号self.sinOut.emit(file_str)# 线程休眠1秒self.sleep(1)

主页面

class Window1(QWidget):"""主界面"""def __init__(self):super().__init__()self.setWindowTitle('网络稳定检测工具')self.resize(400, 200)self.lab1 = QPushButton(self, text="自动检测")self.lab1.move(80, 80)self.lab1.setStyleSheet("font-size:20px;")self.lab1.clicked.connect(self.auto_click)self.lab2 = QPushButton(self, text="手动检测")self.lab2.move(220, 80)self.lab2.setStyleSheet("font-size:20px;")self.lab2.clicked.connect(self.hand_click)def hand_click(self):self.win3 = Window3()self.win3.show()def auto_click(self):self.win2 = Window2()self.win2.show()

手动检测及自动检测界面

class Window2(QWidget):"""自动检测界面"""def __init__(self):super().__init__()self.setWindowTitle('网络稳定检测工具')self.resize(400, 200)self.lab1 = QLabel(self, text="自动检测")self.lab1.move(150, 40)self.lab1.setStyleSheet("font-size:20px;")self.lab2 = QPushButton(self, text="启动")self.lab2.move(145, 100)self.lab2.setStyleSheet("font-size:20px;")self.lab2.clicked.connect(self.start_click)# 启动def start_click(self):self.win4 = Window4()self.win4.show()class Window3(QWidget):"""手动检测界面"""def __init__(self):super().__init__()self.setWindowTitle('网络稳定检测工具')self.resize(400, 200)self.lab1 = QLabel(self, text="手动检测")self.lab1.move(150, 40)self.lab1.setStyleSheet("font-size:20px;")self.lab2 = QPushButton(self, text="启动")self.lab2.move(145, 140)self.lab2.setStyleSheet("font-size:20px;")self.ql_a = QLineEdit(self)self.ql_a.setPlaceholderText('请输入IP地址')self.ql_a.move(100, 90)self.ql_a.resize(200, 30)self.lab2.clicked.connect(self.hand_click)def hand_click(self):self.text = self.ql_a.text()self.win5 = Window5(self.text)self.win5.show()

打开界面及保存为word文档

class Window4(QWidget):"""点击打开界面"""def __init__(self):super().__init__()self.setWindowTitle('网络稳定检测工具')self.resize(400, 200)self.listFile = QListWidget()self.btnStart = QPushButton('开始')self.btnEnd = QPushButton('结束')layout = QGridLayout(self)layout.addWidget(self.listFile, 0, 0, 1, 2)layout.addWidget(self.btnStart, 1, 1)layout.addWidget(self.btnEnd, 1, 0)self.btnEnd.setEnabled(False)# 点击事件# 开始self.btnStart.clicked.connect(self.slotStart)# 结束self.btnEnd.clicked.connect(self.slotEnd)# 创建新线程self.thread = Worker()self.thread.sinOut.connect(self.slotAdd)# 开始按钮按下后使其不可用,启动线程def slotStart(self):self.btnEnd.setEnabled(True)self.btnStart.setEnabled(False)self.thread.start()# 添加def slotAdd(self):file_inf = local()self.listFile.addItem(file_inf)# 结束进程def slotEnd(self):self.close()widgetres = []# 获取listwidget中条目数count = self.listFile.count()# 遍历listwidget中的内容for i in range(count):# print(self.listFile.items(i).text())widgetres.append(self.listFile.item(i).text())document = Document()document.styles['Normal'].font.name = u'宋体'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')for i in widgetres:document.add_paragraph(i)  # 插入段落lastTime = datetime.datetime.now()lastTime = str(lastTime)[:-7].replace(" ", "").replace(":", "-")lastTime = lastTime[:10] + "-" + lastTime[10:]lastTime = lastTime.replace("-", "_")path_save = './' + "localhost" + lastTime + '.docx'document.save(path_save)class Window5(QWidget):"""点击打开界面"""def __init__(self, text):super().__init__()self.text = textself.setWindowTitle('网络稳定检测工具')self.resize(400, 200)self.listFile = QListWidget()self.btnStart = QPushButton('开始')self.btnEnd = QPushButton('结束')layout = QGridLayout(self)layout.addWidget(self.listFile, 0, 0, 1, 2)layout.addWidget(self.btnStart, 1, 1)layout.addWidget(self.btnEnd, 1, 0)self.btnEnd.setEnabled(False)# 点击事件# 开始self.btnStart.clicked.connect(self.slotStart)# 结束self.btnEnd.clicked.connect(self.slotEnd)# 创建新线程self.thread = Worker()self.thread.sinOut.connect(self.slotAdd)# 开始按钮按下后使其不可用,启动线程def slotStart(self):self.btnEnd.setEnabled(True)self.btnStart.setEnabled(False)self.thread.start()# 添加def slotAdd(self):file_inf = appoint_ip(self.text)self.listFile.addItem(file_inf)# 结束进程def slotEnd(self):self.close()widgetres = []# 获取listwidget中条目数count = self.listFile.count()# 遍历listwidget中的内容for i in range(count):widgetres.append(self.listFile.item(i).text())document = Document()document.styles['Normal'].font.name = u'宋体'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')for i in widgetres:document.add_paragraph(i)  # 插入段落lastTime = datetime.datetime.now()lastTime = str(lastTime)[:-7].replace(" ", "").replace(":", "-")lastTime = lastTime[:10] + "-" + lastTime[10:]lastTime = lastTime.replace("-", "_")path_save = './' + "localhost" + lastTime + '.docx'document.save(path_save)

3、演示

主界面

自动检测界面

手动检测界面

保存为word