pyqtSignal의 중복 사용이 불가능 한지 궁금합니다.
조회수 631회
서버와 연결 후에 서버로부터 받은 데이터에 따라 분류 후 해당 메서드로 내용을 보내려고 하는데 pyqtSignal이 Login에서는 잘 되는데 다른 경우는 아예 해당 메서드로 전송이 되지 않습니다. 한 번에 한 개 밖에 못 쓰는건지, 아니면 해당 부분에 무한루프가 존재해야 하는지 궁금합니다.
class Signal(QObject):
LoginInfo = pyqtSignal(str)
Plant = pyqtSignal(str)
tagedit = pyqtSignal(str)
class ClientSocket:
def __init__(self, parent):
self.parent = parent
self.disconn = Signal()
self.Plant = Plant
self.disconn.Plant.connect(self.Plant().results)
self.tags = Signal()
self.tagEdit = TagEdit
self.tags.tagedit.connect(self.tagEdit().tagdelete)
self.recv = Signal()
self.Login = LogIn
self.recv.LoginInfo.connect(self.Login().ConfirmUser)
self.bConnect = False
def __del__(self):
self.stop()
def connectServer(self, ip, port):
self.client = socket(AF_INET, SOCK_STREAM)
try:
self.client.connect( (ip, port) )
except Exception as e:
print('Connect Error : ', e)
return False
else:
self.bConnect = True
self.t = Thread(target=self.receive, args=(self.client,))
self.t.start()
print('Connected')
return True
def stop(self):
self.bConnect = False
if hasattr(self, 'client'):
self.client.close()
del(self.client)
print('Client Stop')
def receive(self, client):
while self.bConnect:
try:
recv = client.recv(1024)
except Exception as e:
print('Recv() Error :', e)
break
else:
msg = str(recv, encoding='utf-8')
if msg:
msg_return = Result_divide(self, msg)
if msg_return == "LoginOK":
self.recv.LoginInfo.emit(msg_return)
elif msg_return == "태그 등록 완료":
self.tags.tagedit.emit(msg_return)
elif msg_return == "Delete":
self.tags.tagedit.emit(msg_return)
print('[RECV]:', msg_return)
self.stop()
def send(self, msg):
if not self.bConnect:
return
try:
self.client.send(msg.encode())
except Exception as e:
print('Send() Error : ', e)
댓글 입력