pyqtsignal을 다른 파일의 클래스(QDialog)에 속한 메서드로 보낼 수 있나요?

조회수 692회
from threading import * 
from socket import *
from PyQt5.QtCore import Qt, pyqtSignal, QObject
from client_Divider import * ```

대개 import한 헤더 부분은 다음과 같습니다. (client_Divider는 제가 만든거에요)

Main.py 에서 지금 아래의 코드로 데이터를 보내고, server에 send를 하고 받아온 데이터를 self.recv.recv_signal.emit(msg_return) 이렇게 해서 아래의 self.recv.recv_signal.connect(self.LogIn.LoginCheck) 코드를 이용해서 LogIn클래스의 LogInCheck라는 메서드에 데이터를 보내고 싶은데, LogInCheck(self, msg):로 메서드를 만들었더니, msg에 들어오는 전달인자가 없다라는 에러가 나옵니다.

parent 클래스로는 데이터가 보내지는 것을 확인 했으나, parent 클래스가 있는 파일 이외에 다른 파일의 클래스로는 데이터를 보낼 수 없는지 궁금합니다.

class Signal(QObject):  

    recv_signal = pyqtSignal(str)

class ClientSocket:

    def __init__(self, parent, LogIn):
        self.parent = parent
        self.LogIn = LogIn
        self.recv = Signal()
        self.recv.recv_signal.connect(self.LogIn.LoginCheck) 
        self.bConnect = False
  • 해결 완료 했습니다. pyqtSignal로 수행되는 메서드는 class와 관계 없는 취급이 되어서 해당 class의 변수 등등을 아예 사용할 수 없게 되기에 전역변수(global)로 선언 후에 딱 필요한 1가지만 연결 해서 해결 했습니다. 다만, 이 방법으로 여러 변수들을 활용해 버리면 스파게티코드가 될 듯 합니다. 반시 2020.2.25 12:15

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)