广州网站建设 app 小程序,玉林专业网站建设,展厅设计公司首选,域名出售平台目录
0x00 前言#xff1a;
一、布局的设置
二、消息的显示 0x00 前言#xff1a; 我们在10讲的基础上#xff0c;需要将其输出到界面上 思路#xff1a; 1、消息的传递 2、布局的设置 先考虑好消息的传递#xff0c;再来完善布局 其实先完善布局#xff0c;再来设置消…目录
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_()) 运行效果