# -*- coding: utf-8 -*- # @Time : 2023/6/9 16:00 # @Author : wangyafeng # @FileName: main.py.py # @Email : [email protected] # @Software: PyCharm import sys from PyQt5.QtWidgets import QApplication, QMainWindow import scanport import threading import socket def scan_port(ip, port, timewait, results): try: con = socket.socket(socket.AF_INET, socket.SOCK_STREAM) con.settimeout(int(timewait) / 1000) conn = con.connect_ex((ip, port)) if conn == 0: results.append(f'主机:{ip},端口{port}已开放') con.close() except: pass class Demo(QMainWindow): def __init__(self): self.app = QApplication(sys.argv) super().__init__() self.ui = scanport.Ui_MainWindow() self.ui.setupUi(self) self.init_ui() def init_ui(self): self.ui.pushButton.clicked.connect(self.click_pushButton) self.show() def click_pushButton(self): self.ui.pushButton.setText('开始扫描') ip = self.ui.IP.toPlainText() startport = self.ui.startport.toPlainText() endport = self.ui.endport.toPlainText() timewait = self.ui.textEdit_4.toPlainText() results = [] threads = [] for port in range(int(startport), int(endport) + int(1)): t = threading.Thread(target=scan_port, args=(ip, port, timewait, results)) threads.append(t) t.start() # for thread in threads: # thread.join() for result in results: self.ui.textBrowser.append(result) self.ui.pushButton.setText('开始扫描') if __name__ == '__main__': e = Demo() sys.exit(e.app.exec())
基于Qt Designer的代码
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'scanport.ui' # # Created by: PyQt5 UI code generator 5.15.4 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(643, 480) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.IP = QtWidgets.QTextEdit(self.centralwidget) self.IP.setGeometry(QtCore.QRect(150, 90, 381, 31)) font = QtGui.QFont() font.setPointSize(16) self.IP.setFont(font) self.IP.setAcceptRichText(False) self.IP.setObjectName("IP") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(110, 100, 41, 16)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(110, 140, 41, 16)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(240, 140, 41, 16)) self.label_3.setObjectName("label_3") self.startport = QtWidgets.QTextEdit(self.centralwidget) self.startport.setGeometry(QtCore.QRect(150, 130, 81, 31)) font = QtGui.QFont() font.setPointSize(12) self.startport.setFont(font) self.startport.setAcceptRichText(False) self.startport.setObjectName("startport") self.endport = QtWidgets.QTextEdit(self.centralwidget) self.endport.setGeometry(QtCore.QRect(280, 130, 81, 31)) font = QtGui.QFont() font.setPointSize(12) self.endport.setFont(font) self.endport.setAcceptRichText(False) self.endport.setObjectName("endport") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(150, 190, 381, 23)) self.pushButton.setObjectName("pushButton") self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget) self.textBrowser.setGeometry(QtCore.QRect(150, 230, 381, 192)) self.textBrowser.setObjectName("textBrowser") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(380, 140, 71, 20)) self.label_4.setObjectName("label_4") self.textEdit_4 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_4.setGeometry(QtCore.QRect(450, 130, 81, 31)) font = QtGui.QFont() font.setPointSize(12) self.textEdit_4.setFont(font) self.textEdit_4.setAcceptRichText(False) self.textEdit_4.setObjectName("textEdit_4") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 643, 23)) self.menubar.setObjectName("menubar") self.menu = QtWidgets.QMenu(self.menubar) self.menu.setObjectName("menu") MainWindow.setMenuBar(self.menubar) self.menubar.addAction(self.menu.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.IP.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'SimSun\'; font-size:16pt; font-weight:400; font-style:normal;\">\n" "<p align=\"center\" style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>")) self.label.setText(_translate("MainWindow", "地址:")) self.label_2.setText(_translate("MainWindow", "端口:")) self.label_3.setText(_translate("MainWindow", "------")) self.pushButton.setText(_translate("MainWindow", "PushButton")) self.label_4.setText(_translate("MainWindow", "等待时长ms:")) self.menu.setTitle(_translate("MainWindow", "端口检测"))
标签:setObjectName,centralwidget,端口,self,扫描,PyQt5,label,QtWidgets,MainWindow From: https://www.cnblogs.com/wangyafeng/p/17474718.html