前言
通过Python可以通过尝试连接TCP来扫描主机,为此写了个小软件,用来扫描主机。
系列
Python多线程扫描主机 一 UI实现和展示_shaynerain的博客-CSDN博客
Python多线程扫描主机 二 范围IP&端口的扫描-CSDN博客
Python多线程扫描主机 三 范围IP&端口的扫描-CSDN博客
目标
用Python实现一个主机扫描的工具,要求如下:
- 要求有UI
- 能多线程扫描
- 指定IP扫描
- 范围IP扫描
- 指定端口扫描
- 范围端口扫描
UI实现
选择使用Pyside6作为UI库,和Pyqt用法基本一样,好处是LGPL协议的,真到了上线的时候使用起来避免了一些麻烦。
首先需要安装,终端中使用pip直接安装,如果pip访问非常慢,可以设置下pip代理
pip install pyside6
打开UI设计软件designer,在终端中直接输入
designer
可看到弹出的窗口
创建新MainWindow进行设计,具体可尝试拖拉各种控件实现如下UI
Python运行UI
首先ui文件转换成python脚本
在.ui文件下打开终端,输入如下指令,其中名字根据需要替换;此时便会得到一个main_ui.py的文件
pyside6-uic -o main_ui.py main.ui
引用main_ui.py、和pyside6,完成以下代码实现UI显示
# UI相关模块
from PySide6 import QtCore
from PySide6 import QtWidgets
from PySide6 import QtGui
# 导入生成的ui文件
import main_ui
import sys
class MainUI(QtWidgets.QMainWindow, main_ui.Ui_MainWindow):
def __init__(self, parent=None):
"""
类初始化
:param parent:
"""
# 初始化
super(MainUI, self).__init__()
# 设置ui
self.setupUi(self)
# 单个执行入口
if __name__ == '__main__':
# 创建app
app = QtWidgets.QApplication()
# 设置整体样式
app.setStyle("Fusion")
# 获取窗口
window = MainUI()
# 显示出来
window.show()
# 等待退出
sys.exit(app.exec())