인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

신의철님의 프로필 이미지
신의철

작성한 질문수

파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기

안녕하세요 좋은사람님.

작성

·

200

0

저번에 질문드린 내용은 잘 해결했습니다. 

class Main에 

sys._excepthook = sys.excepthook

    def exception_hook(exctype, value, traceback):

        print(exctype, value, traceback)

        sys._excepthook(exctype, value, traceback)

        sys.exit(1)

    sys.excepthook = exception_hook

를 넣으니깐 오류가 잘 나오더라구요. 다만 한가지 질문점이 생겼습니다. 

QThread에서 emit하는 부분에서의 질문인데요. 

저는 GUI에서 2개의 lineEdit에서 2가지 string을 입력받아서 

그 두개의 string을  thread에 emit하고 싶습니다. 

코드는 main에 

@pyqtSlot()

    def tab4(self):

        input_3 = self.lineEdit_5.text()

        input_4 = self.lineEdit_7.text()

        self.WorkerC = Worker3()

        self.sig_1.connect(self.WorkerC.ad_cam_name)

        self.sig_1.emit(input_3)

        self.sig_1.connect(self.WorkerC.product_netprofit)

        self.sig_1.emit(input_4)

        self.WorkerC.start()

        self.WorkerC.sig3.connect(self.append_profile)

        self.WorkerC.sig3_1.connect(self.crawl_adinfo)

worker에는 

class Worker3(QThread):

    sig3 = pyqtSignal(str)

    sig3_1 = pyqtSignal(str)



    def __init__(self, parent=None):

        QtCore.QThread.__init__(self, parent)



    def ad_cam_name(self, str):

        self.ad_campaign_name = str



    def product_netprofit(self, str):

        self.product_profit = str

이렇게 짜봤는데...ㅎㅎ thread에서 받는 결과는 항상 input4번만 받더라구요. 

그래서 짐작하기엔 emit을 저렇게 두번 쓰면 아래꺼만 인식되는건지 여기저기 많이 찾아봤는데 

해답을 잘 못찾겠습니다. ㅜㅜ  

두가지 emit을 하는 방법이 어떻게 되나요...?

답변 1

0

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요.

두번을 emit 하지 마시고 한 번 에 이벤트를 처리하는 방식으로 코드를 작성하는게 좋을 것같습니다.

정확한 로직을 제가 몰라서 답변이 디테일하지 않겠지만, 참고하시기 바립니다.

신의철님의 프로필 이미지
신의철

작성한 질문수

질문하기