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

目录

0x00 前言:

一、布局的设置

二、消息的显示


0x00 前言:

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

思路:

1、消息的传递

2、布局的设置

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

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

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



一、布局的设置

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

import sys
import time

from 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 time

from 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.mfbz.cn/a/97265.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树多选搜索查询,搜索后选中状态仍保留

<template><div class"half-transfer"><div class"el-transfer-panel"><div><el-checkbox v-model"selectAll" change"handleSelectAll">全部</el-checkbox></div><el-input v-model&qu…

Breakpad交叉编译aarch64

原本是在mac os上编译的&#xff0c;但是会出现一些问题&#xff0c;因此还是开了台linux容器进行编译&#xff0c;本文可结合之前的linux下编译breakpad共同查看。 Linux下Breakpad编译_Edward.W的博客-CSDN博客https://blog.csdn.net/u013379032/article/details/130754480?…

北京985学校,交叉学科考英一数三408

北京师范大学(B) 考研难度&#xff08;☆☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1096字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 北…

Gradio使用介绍

与他人分享你的机器学习模型、API或数据科学工作流的最佳方式之一&#xff0c;就是创建一个交互式应用程序&#xff0c;让用户或同事可以在他们的浏览器中尝试演示,Gradio是创建提供了用非常方便的方式快速创建一个前端交互应用&#xff0c;那如何使用Gradio呢&#xff1f;因为…

OLED透明屏显示技术:未来显示科技的领航者

OLED透明屏显示技术是一种创新性的显示技术&#xff0c;它的特殊性质使其成为未来显示科技的领航者。 OLED透明屏具有高对比度、快速响应时间、广视角和低功耗等优势&#xff0c;同时&#xff0c;其透明度、柔性和薄型设计使其成为创新设计的理想选择。 本文将深入探讨OLED透…

YII项目在Docker中运行缓慢

缓慢问题分析 请求YII的api时间请求原生查询时间win10 上运行docker上的php api异常慢ubuntu 中拉代码git报错 请求YII的api时间 请求原生查询时间 win10 上运行docker上的php api异常慢 链接阿里数据的 入口直接返回的 网上有说是docker的dns解析慢&#xff1b; 也有说是…

【报错记录】疯狂踩坑之RockyLinux创建Raid1镜像分区,Raid分区在重启后消失了!外加华硕主板使用Raid模式后,硬盘在系统中无法找到问题

前言 为了摆脱对于专业NAS的依赖&#xff0c;我决定专门使用一台Linux服务器安装NAS程序的方式实现NAS功能&#xff0c;这里就需要用到Raid功能&#xff0c;由于目前我只有3块SSD&#xff08;256G500G500G&#xff09;&#xff0c;在ChatGPT的推荐下还是使用一个256G系统盘2块…

等保测评各个级别的详细内容

等保测评是指信息系统安全等级保护测评&#xff0c;是我国信息安全领域中的一项重要工作。根据国家标准《信息系统安全等级保护基本要求》(GB/T 22239-2008)和《信息系统安全等级保护测评技术要求》(GB/T 25070-2010)。 等保测评分为五个级别&#xff0c;分别是&#xff1a;一级…

LLM推理部署(一):LLM七种推理服务框架总结

自从ChatGPT发布以来&#xff0c;国内外的开源大模型如雨后春笋般成长&#xff0c;但是对于很多企业和个人从头训练预训练模型不太现实&#xff0c;即使微调开源大模型也捉襟见肘&#xff0c;那么直接部署这些开源大模型服务于企业业务将会有很大的前景&#xff0c;本文将介绍七…

WebGPT VS WebGPU

推荐&#xff1a;使用 NSDT编辑器 快速搭建3D应用场景 随着WebGPU的引入&#xff0c;Web开发发生了有趣的转变&#xff0c;WebGPU是一种新的API&#xff0c;允许Web应用程序直接访问设备的图形处理单元&#xff08;GPU&#xff09;。这种发展意义重大&#xff0c;因为 GPU 擅长…

浅析token

上一章节我们学习了cookie和session机制&#xff0c;但是他们都有一些缺点&#xff0c;所有这次我们来了解一个机制---token。 一、cookie和session的缺点 cookie信息存储在客户端浏览器上&#xff0c;安全性较低&#xff0c;所以浏览器加入了一些限制确保cookie不会被恶意使用…

2023年京东婴童纸尿裤行业数据分析(京东数据运营)

当前&#xff0c;面对出生率下降、消费疲软等各种大环境不确定性&#xff0c;不仅是线下母婴店深陷于“生意难”的境地&#xff0c;线上消费同样受影响颇深&#xff0c;婴童纸尿裤类目便是如此。下面结合鲸参谋平台的数据&#xff0c;从行业大盘、品牌端等方面来看一下婴童纸尿…

Linux中的dpkg指令(dpkg -l | grep XXX等)

dpkg是Debian包管理系统中的一个工具&#xff0c;用于在Linux系统中安装、升级、删除和管理软件包。它是Debian、Ubuntu以及基于它们的发行版中的包管理器。 dpkg 有很多用法&#xff0c;常用之举例:dpkg -l | grep apt 显示系统中安装的与apt相关&#xff08;命名&#xff09…

什么是跨域(cross-origin)请求,如何解决跨域问题?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 跨域请求和跨域问题⭐ 解决跨域问题的方法1. CORS&#xff08;跨域资源共享&#xff09;2. JSONP&#xff08;JSON with Padding&#xff09;3. 代理服务器4. WebSocket5. 使用服务器中继 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff…

我是如何成为一名全栈工程师的?

经历了将近一年的时间&#xff0c;我终于阶段性地完成了从iOS开发到后端开发的角色转变。 现在我可以自豪地说&#xff0c;我已经接近一名全栈工程师了&#xff0c;已经熟悉了后端开发的各种工具、环境和一些后端工作的方式。 接下来&#xff0c;我将继续熟悉框架、工具、语言…

企业主流全链路监控系统 - 理论

企业主流全链路监控系统 1. 问题背景2. 目标要求1. 探针的性能消耗2. 代码的侵入性3. 可扩展性4.数据的分析 3. 功能模块1. 埋点与生成日志2. 收集和存储日志3. 分析和统计调用链路数据&#xff0c;以及时效性4. 展现以及决策支持 4. Google Dapper1. Span2. Trace3. Annotatio…

QT设置mainwindow的窗口title

QT设置mainwindow的窗口title 在QT程序中&#xff0c;通常会有**aaaa-[bbbbbbb]**这种形式的title&#xff0c;对于刚上手qt的程序员同学&#xff0c;可能会简单的以为修改这种title&#xff0c;就是使用setWindowTitle这个接口&#xff0c;其实只对了一半&#xff0c;这种形式…

Ansible学习笔记9

yum_repository模块&#xff1a; yum_repository模块用于配置yum仓库的。 测试下&#xff1a; [rootlocalhost ~]# ansible group1 -m yum_repository -a "namelocal descriptionlocalyum baseurlfile:///mnt/ enabledyes gpgcheckno" 192.168.17.106 | CHANGED &g…

春秋云镜 CVE-2018-2894

春秋云镜 CVE-2018-2894 Weblogic 任意文件上传漏洞 靶标介绍 Oracle Fusion Middleware 的 Oracle WebLogic Server 组件中的漏洞&#xff08;子组件&#xff1a;WLS - Web Services&#xff09;。受影响的受支持版本包括 12.1.3.0、12.2.1.2 和 12.2.1.3。易于利用的漏洞允…