Пишу серверную часть для программы по удаленному управлению ПК. Решил сделать дизайн интерфейса в PyQt5,
запуск сервера вывел в отдельный поток. И мне нужно вывести из класса сервера переменную с IP и PORT для подключения, чтобы показать её в интерфейсе! Как это можно сделать? (Дизайн сделан в Qt Desinger)
import socket
import webbrowser
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QThread
class Control(QThread):
def __init__(self):
super(Control, self).__init__()
self.value = 0
sig = QtCore.pyqtSignal()
def run(self):
HOST = socket.gethostbyname_ex(socket.gethostname())[-1][-1]
PORT = 6677
#print(HOST)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
while True:
conn, addr = s.accept()
while True:
data = conn.recv(1024).decode('utf-8').lower()
print(data)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setFixedSize(850, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.background_color = QtWidgets.QLabel(self.centralwidget)
self.background_color.setGeometry(QtCore.QRect(0, 0, 850, 600))
self.background_color.setStyleSheet("background-color: rgb(0, 0, 0);")
self.background_color.setFrameShadow(QtWidgets.QFrame.Plain)
self.background_color.setText("")
self.background_color.setObjectName("background_color")
self.namelabel = QtWidgets.QLabel(self.centralwidget)
self.namelabel.setGeometry(QtCore.QRect(0, 0, 850, 600))
font = QtGui.QFont()
font.setFamily("SWEETREVENGE")
font.setPointSize(40)
font.setBold(True)
font.setWeight(75)
self.namelabel.setFont(font)
self.namelabel.setStyleSheet("QLabel#namelabel{\n"
" margin-top: 50px;\n"
" color: rgb(255, 255, 255);\n"
"}")
self.namelabel.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
self.namelabel.setObjectName("namelabel")
self.ip_port = QtWidgets.QLabel(self.centralwidget)
self.ip_port.setGeometry(QtCore.QRect(0, 0, 850, 600))
font = QtGui.QFont()
font.setFamily("Ubuntu")
font.setPointSize(20)
self.ip_port.setFont(font)
self.ip_port.setStyleSheet("color:white;")
self.ip_port.setAlignment(QtCore.Qt.AlignCenter)
self.ip_port.setIndent(0)
self.ip_port.setOpenExternalLinks(False)
self.ip_port.setObjectName("ip_port")
self.result_connect = QtWidgets.QLabel(self.centralwidget)
self.result_connect.setGeometry(QtCore.QRect(0, 0, 850, 600))
font = QtGui.QFont()
font.setFamily("Ubuntu")
font.setPointSize(19)
self.result_connect.setFont(font)
self.result_connect.setStyleSheet("margin-bottom: 100px;\n"
"color: white;")
self.result_connect.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)
self.result_connect.setObjectName("result_connect")
MainWindow.setCentralWidget(self.centralwidget)
self.control = Control()
self.control.start()
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "PC Control"))
self.namelabel.setText(_translate("MainWindow", "PC CONTROLS"))
self.ip_port.setText(_translate("MainWindow", "127.0.0.1:6677"))
self.result_connect.setText(_translate("MainWindow", "Connection Waiting..."))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())