Проблема с потоком PyQt5

Никак не получается подвязать многопоточность к одной из моих функций в программе.

Программа просто не реагирует на нажатие кнопки. Пытался изменить значение change_value на значение переменной lineEdit_2 - тот же самый результат.

import urllib.request
import time
import json
import socket
import requests, sys
import ipaddress

from urllib.request import Request, urlopen
import os
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QLineEdit
from PyQt5.QtCore import pyqtSignal


# Сигнал
class ThreadClass(QtCore.QThread):
    upd = pyqtSignal(int)


    def __init__(self,parent=None):
        super(ThreadClass,self).__init__(parent)

    def run(self):
        mas = [20, 21, 22, 23, 25, 42, 43, 53, 67, 69, 80, 110, 115, 123, 137, 138, 139, 143, 161, 179, 443, 445,
               514, 515,
               993, 995]
        host = self.lineEdit_2.emit(int)
        try:
            ipaddress.ip_network(host)
            for port in mas:
                s = socket.socket()
                s.settimeout(1)
                try:
                    s.connect((host, port))
                    time.sleep(1.5)
                    per2 = (str(port) + ' port open!')

                    a = self.textEdit_5.emit(per2)
                    print(per2)
                except socket.error:
                    per3 = (str(port) + ' port locked!')
                    b = self.textEdit_5.emit(per3)
        except ValueError:
            QMessageBox.warning(self, 'Error!', 'Invalid IP!')


class Ui_MainWindow(object):
    lineEdit_2: QLineEdit

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1321, 934)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 2421, 921))
        self.tabWidget.setMinimumSize(QtCore.QSize(801, 0))
        self.tabWidget.setStyleSheet("QPushButton:hover {\n"
"  background-color:silver\n"
"}")
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.pushButton = QtWidgets.QPushButton(self.tab)
        self.pushButton.setGeometry(QtCore.QRect(30, 302, 111, 31))
        self.pushButton.setObjectName("pushButton")
        self.textEdit_2 = QtWidgets.QTextEdit(self.tab)
        self.textEdit_2.setGeometry(QtCore.QRect(260, 40, 441, 291))
        self.textEdit_2.setStyleSheet("background-color:black")
        self.textEdit_2.setObjectName("textEdit_2")
        self.label = QtWidgets.QLabel(self.tab)
        self.label.setGeometry(QtCore.QRect(36, 20, 101, 20))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.tab)
        self.label_2.setGeometry(QtCore.QRect(260, 20, 441, 20))
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(self.tab)
        self.lineEdit.setGeometry(QtCore.QRect(40, 40, 91, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.wh1 = QtWidgets.QLabel(self.tab)
        self.wh1.setGeometry(QtCore.QRect(270, 39, 181, 41))
        self.wh1.setStyleSheet("color:red;")
        self.wh1.setText("")
        self.wh1.setObjectName("wh1")
        self.wh2 = QtWidgets.QLabel(self.tab)
        self.wh2.setGeometry(QtCore.QRect(270, 70, 181, 31))
        self.wh2.setStyleSheet("color:red;")
        self.wh2.setText("")
        self.wh2.setObjectName("wh2")
        self.wh3 = QtWidgets.QLabel(self.tab)
        self.wh3.setGeometry(QtCore.QRect(270, 80, 181, 61))
        self.wh3.setStyleSheet("color:red;")
        self.wh3.setText("")
        self.wh3.setObjectName("wh3")
        self.wh4 = QtWidgets.QLabel(self.tab)
        self.wh4.setGeometry(QtCore.QRect(270, 110, 181, 51))
        self.wh4.setStyleSheet("color:red;")
        self.wh4.setText("")
        self.wh4.setObjectName("wh4")
        self.wh5 = QtWidgets.QLabel(self.tab)
        self.wh5.setGeometry(QtCore.QRect(270, 130, 181, 61))
        self.wh5.setStyleSheet("color:red;")
        self.wh5.setText("")
        self.wh5.setObjectName("wh5")
        self.wh6 = QtWidgets.QLabel(self.tab)
        self.wh6.setGeometry(QtCore.QRect(270, 160, 181, 51))
        self.wh6.setStyleSheet("color:red;")
        self.wh6.setText("")
        self.wh6.setObjectName("wh6")
        self.wh7 = QtWidgets.QLabel(self.tab)
        self.wh7.setGeometry(QtCore.QRect(270, 180, 421, 61))
        self.wh7.setStyleSheet("color:red;")
        self.wh7.setText("")
        self.wh7.setObjectName("wh7")
        self.wh8 = QtWidgets.QLabel(self.tab)
        self.wh8.setGeometry(QtCore.QRect(270, 250, 261, 81))
        self.wh8.setStyleSheet("color:red;")
        self.wh8.setText("")
        self.wh8.setObjectName("wh8")
        self.tabWidget.addTab(self.tab, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.textEdit_5 = QtWidgets.QTextEdit(self.tab_3)
        self.textEdit_5.setGeometry(QtCore.QRect(260, 40, 441, 291))
        self.textEdit_5.setStyleSheet("background-color:black;color:red;")
        self.textEdit_5.setObjectName("textEdit_5")
        self.pushButton_3 = QtWidgets.QPushButton(self.tab_3)
        self.pushButton_3.setGeometry(QtCore.QRect(30, 302, 111, 31))
        self.pushButton_3.setObjectName("pushButton_3")
        self.label_5 = QtWidgets.QLabel(self.tab_3)
        self.label_5.setGeometry(QtCore.QRect(36, 22, 111, 16))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.tab_3)
        self.label_6.setGeometry(QtCore.QRect(260, 15, 431, 31))
        self.label_6.setObjectName("label_6")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.tab_3)
        self.lineEdit_2.setGeometry(QtCore.QRect(40, 40, 91, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.tabWidget.addTab(self.tab_3, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.label_3 = QtWidgets.QLabel(self.tab_2)
        self.label_3.setGeometry(QtCore.QRect(36, 20, 101, 20))
        self.label_3.setToolTipDuration(-7)
        self.label_3.setStyleSheet("color:black;")
        self.label_3.setObjectName("label_3")
        self.textEdit_4 = QtWidgets.QTextEdit(self.tab_2)
        self.textEdit_4.setGeometry(QtCore.QRect(260, 40, 441, 291))
        self.textEdit_4.setStyleSheet("background-color:black;color:red;")
        self.textEdit_4.setObjectName("textEdit_4")
        self.label_4 = QtWidgets.QLabel(self.tab_2)
        self.label_4.setGeometry(QtCore.QRect(260, 20, 441, 20))
        self.label_4.setObjectName("label_4")
        self.pushButton_2 = QtWidgets.QPushButton(self.tab_2)
        self.pushButton_2.setGeometry(QtCore.QRect(30, 302, 111, 31))
        self.pushButton_2.setObjectName("pushButton_2")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.tab_2)
        self.lineEdit_3.setGeometry(QtCore.QRect(40, 40, 91, 20))
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.tabWidget.addTab(self.tab_2, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1321, 20))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(2)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def showMessageBox(self,title,messege):
        msgBox = QtGui.QMessegeBox()
        msgBox.setIcon(QtGui.QMessegeBox.Warning)
        msgBox.setWindowTitle(title)
        msgBox.setText(messege)
        msgBox.setStandardButtons(QtGui.QMessageBox.Ok)
        msgBox.exce_()


    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Punch!"))
        self.label.setText(_translate("MainWindow", "               IP"))
        self.label_2.setText(_translate("MainWindow", "                                                              Work place"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Whois Function"))
        self.pushButton_3.setText(_translate("MainWindow", "Punch!"))
        self.label_5.setText(_translate("MainWindow", "               IP"))
        self.label_6.setText(_translate("MainWindow", "                                                              Work place"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Port Scanner "))
        self.label_3.setText(_translate("MainWindow", "               IP"))
        self.label_4.setText(_translate("MainWindow", "                                                              Work place"))
        self.pushButton_2.setText(_translate("MainWindow", "Punch!"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Blacklists checkout "))

    ## Ниже функция





class Window(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self,*args,**kwargs):
        super(Window, self).__init__(parent = None)
        self.pushButton_3.clicked.connect(self.__init__())

    def __init__(self, parent=None):
            super(Window, self).__init__(parent)

            self.threadclass = ThreadClass()
            self.threadclass.start()
            self.threadclass.a.connect(self.lineEdit_2.emit)
            self.threadclass.b.connect(self.textEdit_5.emit)





if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle('Fusion')
    w = Window()
    w.show()
    sys.exit(app.exec_())

(Интерфейс) введите сюда описание изображения


Ответы (1 шт):

Автор решения: S. Nick

Ваш код должен выглядеть примерно так:

import sys
#import os
#import urllib.request
#import time
#import json
import socket
#import requests
import ipaddress
#from urllib.request import Request, urlopen

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QLineEdit
from PyQt5.QtCore import pyqtSignal


class ThreadClass(QtCore.QThread):
#    upd = pyqtSignal(int)
    mySignal = pyqtSignal(str)
    
#                      vvvv
    def __init__(self, host, parent=None):
        super(ThreadClass,self).__init__(parent)
        self.host = host                                               #+++

    def run(self):
        mas = [20, 21, 22, 23, 25, 42, 43, 53, 67, 69, 80, 110, 115, 123, 137, 138, 139, 143, 161, 179, 443, 445,
               514, 515,
               993, 995]
#        host = self.lineEdit_2.emit(int)
        
        try:
            ipaddress.ip_network(self.host)                           # self.host
            for port in mas:
                s = socket.socket()
                s.settimeout(1)
                try:
                    s.connect((self.host, port))
#                    time.sleep(1.5)
                    self.msleep(1500)
                    per2 = f'{port} <- port open!'
#                    self.textEdit_5.emit(per2)
                    self.mySignal.emit(per2)
#                    print(per2)
                except socket.error:
                    per3 = (str(port) + ' port locked!')
#                    self.textEdit_5.emit(per3)
                    self.mySignal.emit(per3)
        except ValueError:
#            QMessageBox.warning(self, 'Error!', 'Invalid IP!')
            self.mySignal.emit('Error! --->>> Invalid IP!')


class Ui_MainWindow(object):
# ?   lineEdit_2: QLineEdit
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1321, 934)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 2421, 921))
        self.tabWidget.setMinimumSize(QtCore.QSize(801, 0))
        self.tabWidget.setStyleSheet("QPushButton:hover {\n"
"  background-color:silver\n"
"}")
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.pushButton = QtWidgets.QPushButton(self.tab)
        self.pushButton.setGeometry(QtCore.QRect(30, 302, 111, 31))
        self.pushButton.setObjectName("pushButton")
        self.textEdit_2 = QtWidgets.QTextEdit(self.tab)
        self.textEdit_2.setGeometry(QtCore.QRect(260, 40, 441, 291))
        self.textEdit_2.setStyleSheet("background-color:black")
        self.textEdit_2.setObjectName("textEdit_2")
        self.label = QtWidgets.QLabel(self.tab)
        self.label.setGeometry(QtCore.QRect(36, 20, 101, 20))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.tab)
        self.label_2.setGeometry(QtCore.QRect(260, 20, 441, 20))
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(self.tab)
        self.lineEdit.setGeometry(QtCore.QRect(40, 40, 91, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.wh1 = QtWidgets.QLabel(self.tab)
        self.wh1.setGeometry(QtCore.QRect(270, 39, 181, 41))
        self.wh1.setStyleSheet("color:red;")
        self.wh1.setText("")
        self.wh1.setObjectName("wh1")
        self.wh2 = QtWidgets.QLabel(self.tab)
        self.wh2.setGeometry(QtCore.QRect(270, 70, 181, 31))
        self.wh2.setStyleSheet("color:red;")
        self.wh2.setText("")
        self.wh2.setObjectName("wh2")
        self.wh3 = QtWidgets.QLabel(self.tab)
        self.wh3.setGeometry(QtCore.QRect(270, 80, 181, 61))
        self.wh3.setStyleSheet("color:red;")
        self.wh3.setText("")
        self.wh3.setObjectName("wh3")
        self.wh4 = QtWidgets.QLabel(self.tab)
        self.wh4.setGeometry(QtCore.QRect(270, 110, 181, 51))
        self.wh4.setStyleSheet("color:red;")
        self.wh4.setText("")
        self.wh4.setObjectName("wh4")
        self.wh5 = QtWidgets.QLabel(self.tab)
        self.wh5.setGeometry(QtCore.QRect(270, 130, 181, 61))
        self.wh5.setStyleSheet("color:red;")
        self.wh5.setText("")
        self.wh5.setObjectName("wh5")
        self.wh6 = QtWidgets.QLabel(self.tab)
        self.wh6.setGeometry(QtCore.QRect(270, 160, 181, 51))
        self.wh6.setStyleSheet("color:red;")
        self.wh6.setText("")
        self.wh6.setObjectName("wh6")
        self.wh7 = QtWidgets.QLabel(self.tab)
        self.wh7.setGeometry(QtCore.QRect(270, 180, 421, 61))
        self.wh7.setStyleSheet("color:red;")
        self.wh7.setText("")
        self.wh7.setObjectName("wh7")
        self.wh8 = QtWidgets.QLabel(self.tab)
        self.wh8.setGeometry(QtCore.QRect(270, 250, 261, 81))
        self.wh8.setStyleSheet("color:red;")
        self.wh8.setText("")
        self.wh8.setObjectName("wh8")
        self.tabWidget.addTab(self.tab, "")
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.textEdit_5 = QtWidgets.QTextEdit(self.tab_3)
        self.textEdit_5.setGeometry(QtCore.QRect(260, 40, 441, 291))
        self.textEdit_5.setStyleSheet("background-color:black;color:red;")
        self.textEdit_5.setObjectName("textEdit_5")
        self.pushButton_3 = QtWidgets.QPushButton(self.tab_3)
        self.pushButton_3.setGeometry(QtCore.QRect(30, 302, 111, 31))
        self.pushButton_3.setObjectName("pushButton_3")
        self.label_5 = QtWidgets.QLabel(self.tab_3)
        self.label_5.setGeometry(QtCore.QRect(36, 22, 111, 16))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.tab_3)
        self.label_6.setGeometry(QtCore.QRect(260, 15, 431, 31))
        self.label_6.setObjectName("label_6")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.tab_3)       
        self.lineEdit_2.setGeometry(QtCore.QRect(40, 40, 91, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.tabWidget.addTab(self.tab_3, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.label_3 = QtWidgets.QLabel(self.tab_2)
        self.label_3.setGeometry(QtCore.QRect(36, 20, 101, 20))
        self.label_3.setToolTipDuration(-7)
        self.label_3.setStyleSheet("color:black;")
        self.label_3.setObjectName("label_3")
        self.textEdit_4 = QtWidgets.QTextEdit(self.tab_2)
        self.textEdit_4.setGeometry(QtCore.QRect(260, 40, 441, 291))
        self.textEdit_4.setStyleSheet("background-color:black;color:red;")
        self.textEdit_4.setObjectName("textEdit_4")
        self.label_4 = QtWidgets.QLabel(self.tab_2)
        self.label_4.setGeometry(QtCore.QRect(260, 20, 441, 20))
        self.label_4.setObjectName("label_4")
        self.pushButton_2 = QtWidgets.QPushButton(self.tab_2)
        self.pushButton_2.setGeometry(QtCore.QRect(30, 302, 111, 31))
        self.pushButton_2.setObjectName("pushButton_2")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.tab_2)
        self.lineEdit_3.setGeometry(QtCore.QRect(40, 40, 91, 20))
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.tabWidget.addTab(self.tab_2, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1321, 20))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Punch!"))
        self.label.setText(_translate("MainWindow", "               IP"))
        self.label_2.setText(_translate("MainWindow", "                                                              Work place"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Whois Function"))
        self.pushButton_3.setText(_translate("MainWindow", "Punch 333"))
        self.label_5.setText(_translate("MainWindow", "               IP"))
        self.label_6.setText(_translate("MainWindow", "                                                              Work place"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Port Scanner "))
        self.label_3.setText(_translate("MainWindow", "               IP"))
        self.label_4.setText(_translate("MainWindow", "                                                              Work place"))
        self.pushButton_2.setText(_translate("MainWindow", "Punch!"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Blacklists checkout "))

       
class Window(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.lineEdit_2.setText('78.154.187.198')
        self.pushButton_3.clicked.connect(self.onPunch)   

    def onPunch(self):
        host = self.lineEdit_2.text()
        
        self.threadclass = ThreadClass(host, self)
        self.threadclass.start()
        self.threadclass.mySignal.connect(self.msg_thread)
        self.threadclass.finished.connect(self.msg_thread_finished)
        

    def msg_thread(self, text):
        self.textEdit_5.append(text)
        
    def msg_thread_finished(self):
        self.textEdit_5.append(' -- msg_thread_finished --')


if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle('Fusion')
    w = Window()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка