当前位置: 首页 > news >正文

【pyqt5界面化工具开发-11】界面化显示检测信息

目录

0x00 前言:

一、布局的设置

二、消息的显示


0x00 前言:

我们在10讲的基础上,需要将其输出到界面上

思路:

1、消息的传递

2、布局的设置

先考虑好消息的传递,再来完善布局

其实先完善布局,再来设置消息的传递也行

(我不是中国人,就是外国人)



一、布局的设置

将布局设置好以后,我们就可以来绑定消息,以及消息的显示

import sys
import timefrom PyQt5.QtCore import *
from PyQt5.QtWidgets import *class MainWindow(QDialog):# 声明一个信号,放在函数外面my_signal = pyqtSignal(str)def __init__(self):super().__init__()self.init_ui()self.msg_history = list()       # 用来存放消息def init_ui(self):self.resize(500,400)container = QVBoxLayout()   # 创建一个整体布局self.setLayout(container)   # 设置布局器(主入器)#————————————————————————————————————————————————————————————-————
# 以下为布局的设置# 创建一个滚动对象scroll = QScrollArea()scroll.setWidget(self.msg)# 创建垂直布局,用来添加自动滚动条v_layout = QVBoxLayout()v_layout.addWidget(scroll)# 常见水平布局器h_layout = QHBoxLayout()btn = QPushButton("开始检测",self)# 绑定按钮的点击事件btn.clicked.connect(self.check)h_layout.addStretch(1)  # 伸缩器h_layout.addWidget(btn)h_layout.addStretch(1)# 水平+垂直布局 添加到主容器container.addLayout(v_layout)container.addLayout(h_layout)#————————————————————————————————————————————————————————————————# 定义槽def my_slot(self,msg):# 更新内容print(msg)# 点击事件对应的逻辑函数代码def check(self):# 下面改为自己的漏洞检测事件for i,ip in enumerate(["192.168.1.%d" % x for x in range(1,20)]):msg = "正在检测 %s 上的漏洞" % ip# print(msg)# 漏洞的判断if i % 5 == 0:# 发射信号  对象.信号(参数)self.my_signal.emit(msg + "[存在漏洞]")# else:#     self.my_signal.emit("")time.sleep(0.1)if __name__ == '__main__':app = QApplication(sys.argv)# 根据命名自己改(我每个都以MainWindow就不改了)w = MainWindow()w.setWindowTitle("对话框")w.show()sys.exit(app.exec_())



二、消息的显示

对于消息的布局+消息的更新显示

import sys
import timefrom PyQt5.QtCore import *
from PyQt5.QtWidgets import *class MainWindow(QDialog):# 声明一个信号,放在函数外面my_signal = pyqtSignal(str)def __init__(self):super().__init__()self.init_ui()self.msg_history = list()       # 用来存放消息def init_ui(self):self.resize(500,400)container = QVBoxLayout()   # 创建一个整体布局self.setLayout(container)   # 设置布局器(主入器)#————————————————————————————————————————————————————————
# 消息的显示界面# 显示检测到的界面信息self.msg = QLabel("")self.msg.resize(400,40)self.msg.setWordWrap(True)              # 自动换行self.msg.setAlignment(Qt.AlignTop)      # 靠上# self.msg.setStyleSheet("background-color:yellow;color:black;")#————————————————————————————————————————————————————————# 创建一个滚动对象scroll = QScrollArea()scroll.setWidget(self.msg)# 创建垂直布局,用来添加自动滚动条v_layout = QVBoxLayout()v_layout.addWidget(scroll)# 常见水平布局器h_layout = QHBoxLayout()btn = QPushButton("开始检测",self)# 绑定按钮的点击事件btn.clicked.connect(self.check)h_layout.addStretch(1)  # 伸缩器h_layout.addWidget(btn)h_layout.addStretch(1)# 水平+垂直布局 添加到主容器container.addLayout(v_layout)container.addLayout(h_layout)# 绑定信号和槽(自定义的)self.my_signal.connect(self.my_slot)# 定义槽def my_slot(self,msg):# 更新内容print(msg)#————————————————————————————————————————————————————————————————————————————————————
# 消息的更新self.msg_history.append(msg)self.msg.setText("<br>".join(self.msg_history))self.msg.resize(400,self.msg.frameSize().height() + 40)     # 增加的大小,和设置的每一行的宽高一致self.msg.repaint()          # 更新内容,不更新会无显示# print("[+]",msg)#————————————————————————————————————————————————————————————————————————————————————# 点击事件对应的逻辑函数代码def check(self):# 下面改为自己的漏洞检测事件for i,ip in enumerate(["192.168.1.%d" % x for x in range(1,20)]):msg = "正在检测 %s 上的漏洞" % ip# print(msg)# 漏洞的判断if i % 5 == 0:# 发射信号  对象.信号(参数)self.my_signal.emit(msg + "[存在漏洞]")# else:#     self.my_signal.emit("")time.sleep(0.1)if __name__ == '__main__':app = QApplication(sys.argv)# 根据命名自己改(我每个都以MainWindow就不改了)w = MainWindow()w.setWindowTitle("对话框")w.show()sys.exit(app.exec_())

运行效果:

http://www.lryc.cn/news/146240.html

相关文章:

  • Batbot电力云平台在智能配电室中的应用
  • 链表(详解)
  • 最简单vue获取当前地区天气--高德开放平台实现
  • 大数据处理 正则表达式去除特殊字符 提取中文英文数字
  • Python装饰器(decorators)
  • [halcon] 局部图片保存 gen_circle 和 gen_rectangle2 对比 这怕不是bug吧
  • 解析msvcp100.dll丢失的原因及修复方法,教你快速解决的方案
  • 算法:模拟思想算法
  • 【base64】JavaScriptuniapp 将图片转为base64并展示
  • 根据一个List生成另外一个List,修改其中一个,导致另外一个List也在变化
  • Cesium 加载 geojson 文件并对文件中的属性值进行颜色设置
  • windows系统配置tcp最大连接数
  • SQL存储过程中 SET ANSI_NULLS ON 和 SET QUOTED_IDENTIFIER ON的作用和详解
  • C语言——程序执行的三大流程
  • 二级MySQL(十)——单表查询
  • 机器学习:无监督学习
  • 计算机网络之5层网络协议
  • 常见前端面试之VUE面试题汇总十一
  • 2021年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 解决 git clone 时出现Failed to connect to 127.0.0.1 port 1573问题
  • 日本核污染水排海,有必要囤盐吗?
  • windows 10自带命令查看文件的哈希值
  • ssm+vue理发店会员管理系统源码和论文
  • Python的for循环
  • 爬虫逆向实战(二十七)--某某招标投标网站招标公告
  • 线程和之间的通讯方式、进程之间的通讯方式、线程之间如何同步
  • CRM线索公海如何管理?
  • 创建web应用程序,React和Vue怎么选?
  • 【每日一题】1267. 统计参与通信的服务器
  • Python入门教程29:字符串前加r、u、b、f是什么意思?