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

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

통치꽁조림님의 프로필 이미지
통치꽁조림

작성한 질문수

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

[ 여기서 잠깐! ] 파이썬 쓰레드(Threading) 알아보기

선생님 질문 있습니다!

작성

·

152

0

안녕하세요 제가 만들어본 코드에서 도저히 안되는 부분이 있어서 질문 남깁니다..

1. 첫번째 클래스에 있는 QtextBrowser에 현재상태가 표시되게 하고 싶은데 안됩니다...

전역변수에서 값을 받는건 되는거 같은데 두번째 클래스에서 첫번째 클래스로 값을 보내는 건 안되는 것 같더라구요..

2. 다른 방법으로 현재 상태가 어떻다! 표시할 수 있는 방법은 없나요?

3.오류로 인한 PyQt5 창 닫는 건 어떻게 멈출 수 있을까요?

 

구글링 많이 해봤는데....도와주십시오...ㅠㅠㅠ

import sys
from PyQt5.QtWidgets import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import sys
import time
import pyperclip
from PyQt5.QtCore import *

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.Qline = QLineEdit()

        self.Qline1 = QLineEdit()
        self.Qline1.returnPressed.connect(self.append_text)

        self.Qline2 = QLineEdit()
        self.Qline2.returnPressed.connect(self.append_text1)

        self.Qline3 = QLineEdit()
        self.Qline3.returnPressed.connect(self.append_text2)
        
        self.Browser = QTextBrowser()
        self.Browser.setAcceptRichText(True)
        self.Browser.setOpenExternalLinks(True)

        self.Browserr = QTextBrowser()
        self.Browserr.setAcceptRichText(True)
        self.Browserr.setOpenExternalLinks(True)

        self.Browser1 = QTextBrowser()
        self.Browser1.setAcceptRichText(True)
        self.Browser1.setOpenExternalLinks(True)

        self.Browser2 = QTextBrowser()
        self.Browser2.setAcceptRichText(True)
        self.Browser2.setOpenExternalLinks(True)

        self.Browser3 = QTextBrowser()
        self.Browser3.setAcceptRichText(True)
        self.Browser3.setOpenExternalLinks(True)

        self.label1=QLabel('아이디:')
        self.label2=QLabel('패스워드:')
        self.label3=QLabel('주소:')
        self.label4=QLabel('')
        self.label6=QLabel('주소 입력 후 Enter')
        self.label7=QLabel('')
        self.label8=QLabel('')
        self.label9=QLabel('검색어 :')

        self.clear_btn = QPushButton('Clear')
        self.clear_btn.pressed.connect(self.clear_text)

        self.clear_btn2 = QPushButton('Clear')
        self.clear_btn2.pressed.connect(self.clear_text2)

        self.clear_btn3 = QPushButton('Clear')
        self.clear_btn3.pressed.connect(self.clear_text3)
        
        self.start = QPushButton('Start'self)
        self.start.clicked.connect(self.start_text)

        grid = QGridLayout()
        self.setLayout(grid)

        grid.addWidget(self.label100)
        grid.addWidget(self.Qline01)
        grid.addWidget(self.label210)
        grid.addWidget(self.Qline111)
        grid.addWidget(self.Browser31)
        grid.addWidget(self.Browserr41)
        grid.addWidget(self.clear_btn51)

        grid.addWidget(self.label460)
        grid.addWidget(self.label370)
        grid.addWidget(self.Qline271)
        grid.addWidget(self.label681)
        grid.addWidget(self.Browser191)
        grid.addWidget(self.clear_btn2101)


        grid.addWidget(self.label8130)
        grid.addWidget(self.label9140)
        grid.addWidget(self.Qline3141)
        grid.addWidget(self.Browser2151)
        grid.addWidget(self.clear_btn3161)
        grid.addWidget(self.label7170)
        grid.addWidget(self.start181)
        grid.addWidget(self.Browser3191)

        self.setWindowTitle('로그인 해봅시다!')
        self.setGeometry(300100400500)
        self.show()

    def append_text(self):
        text = self.Qline.text()
        text1 = self.Qline1.text()
        self.Browser.append(text)
        self.Browserr.append(text1)
        self.Qline.clear()
        self.Qline1.clear()

    def append_text1(self):
        text2 = self.Qline2.text()
        self.Browser1.append(text2)
        self.Qline2.clear()

    def append_text2(self):
        text3 = self.Qline3.text()
        self.Browser2.append(text3)
        self.Qline3.clear()

    def clear_text(self):
        self.Browser.clear()
        self.Browserr.clear()

    def clear_text2(self):
        self.Browser1.clear()

    def clear_text3(self):
        self.Browser2.clear()

    def start_text(self):
        self.Browser3.setText("검색 시작!")
        self.worker = WorkerThread()
        self.worker.start()
        global a
        a = self.Browser.toPlainText()
        global b
        b = self.Browserr.toPlainText()
        global c
        c = self.Browser3

class WorkerThread(QThreadQWidget):
    def run(self):
        self.actions
        ppap = a.split('\n')
        ppap2 = b.split('\n')
        i = 0
        while i < len(ppap):
            driver = webdriver.Chrome(executable_path=r'C:\\newdongwoo\\chromedriver.exe')
            driver.get("https://nid.naver.com/nidlogin.login?svctype=262144&url=https%3A%2F%2Fnid.naver.com%2Fmobile%2Fuser%2Fhelp%2FnaverProfile.nhn%3Flang%3Dko_KR")
            login_btn = driver.find_element_by_id('log.login')
            tag_id = driver.find_element_by_name('id')
            tag_pw = driver.find_element_by_name('pw')
            tag_id.clear()
            tag_id.click()
            c.setText("이 코드에서 값을 못 보내는 듯 합니다..")
            pyperclip.copy(ppap[i])
            tag_id.send_keys(Keys.CONTROL'v')
            time.sleep(1)

            tag_pw.click()
            pyperclip.copy(ppap2[i])
            tag_pw.send_keys(Keys.CONTROL'v')
            time.sleep(1)

            login_btn.click()
            time.sleep(2)        
            i += 1
                
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

답변 2

0

넵 파이참으로 확인해보겠습니다. 감사합니다!^^

0

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

안녕하세요. 

열심히 하시네요 지금 소스코드 상으로는 큰 문제는 없어보이는데

디버깅을 해봐야 될 것 같습니다.

검색 후 pycharm 무료 버전 등으로 실행하셔서 로그를 살펴보시는 것을 추천드립니다.

아직까지 pyqt 오류로 갑자기 닫히는 원인은 운영체제 및 파이썬 버전과도 영향이 있어 막기는 쉽지 않습니다.

통치꽁조림님의 프로필 이미지
통치꽁조림

작성한 질문수

질문하기