0

i want fix my code.

but i don't know what is wrong.....

I think it's a matter of thread. But I lack an understanding of thread. Perhaps there is a problem with textBrowser.

The problem I have identified so far seems to be caused by not working in the same thread.

So I think we should send messages between threads, so I'd appreciate it if you could advise us what to do.

My err message is **

(Parent is QTextDocument(0x7fa2a433d840), parent's thread is QThread(0x7fa2c3447ae0), current thread is Thread2(0x7fa2a4129c60)

**

My code is

import time
import sys 
from PyQt5.QtWidgets import * 
from PyQt5 import uic 
from PyQt5.QtCore import * 
from excel import runEstiFile
import requests
import json

import os

import webbrowser

URL = "www.naver.com"


form_class = uic.loadUiType("gui.ui")[0] 

#Thread 1 
class Thread1(QThread): 
    def __init__(self, parent): 
        super().__init__(parent) 
        self.parent = parent 

    def run(self):
        canUserRun = self.parent.loginState.toPlainText()
        if(canUserRun == "L"):
            self.parent.textBrowser.setPlainText("멤버십이 필요합니다.") 
            return 
        elif(canUserRun == "F"):
            self.parent.textBrowser.setPlainText("로그인이 필요합니다.") 
            return 


        self.parent.textBrowser.setPlainText("견적서 파일을 실행합니다.") 
        message = runEstiFile()

        if(message == "true"):
            self.parent.textBrowser.append("견적서 파일이 생성되었습니다.")  
        else:
            self.parent.textBrowser.append(message)  



#Thread2
class Thread2(QThread): 
    def __init__(self, parent): 
        super().__init__(parent) 
        self.parent = parent
    
    def run(self): 
        keyVal = self.parent.loginKey.toPlainText().replace(" ", "").rstrip()
        URL = 'http://localhost:8001/user/login'
        data = {'id': keyVal}

        try:
            res = requests.post(URL, data)
            # self.parent.textBrowser.append(response.data) 
            res = res.json()
        except Exception as e:
            self.parent.textBrowser.setPlainText("서버 통신에 문제가 발생했습니다. (err : 100)")
            return
        

        if(res["success"]):
            # login Key File 
            f = open('./lib/key1.txt', 'w')
            f.write(keyVal.replace(" ", "").rstrip())
            f.close()
            canUserRun = True
            self.parent.textBrowser.setPlainText("로그인 성공")
            self.parent.textBrowser.append("사용 가능 여부 : " + str(res["canUse"]))
            self.parent.loginState.setPlainText("L")

            if(res["canUse"]):
                self.parent.loginState.setPlainText("T")
                self.parent.textBrowser.append("만료일 : " + res["membershipEndedDate"]) 
        else:
            self.parent.textBrowser.setPlainText("로그인 정보를 확인해주세요")
    

    
class WindowClass(QMainWindow, form_class) : 
    def __init__(self) : 
        super().__init__() 
        self.setupUi(self) 

        # Exist file
        fileExist = os.path.isfile("./lib/key.txt")
        print(fileExist)
    
        if fileExist:
            f = open("./lib/key.txt", 'r')
            line = f.readline()
            # save key value
            self.loginKey.setPlainText(line.replace(" ", ""))
            f.close()
    

        self.runButton1.clicked.connect(self.actionFunction1) 
        self.runButton2.clicked.connect(self.actionFunction2) 
        self.estiFolder.clicked.connect(self.estiFolderOpen) 
        self.resultFolder.clicked.connect(self.resultFolderOpen) 
        
    
    def actionFunction1(self): 
        h1 = Thread1(self)
        h1.start()
    
    def actionFunction2(self): 
        h2 = Thread2(self)
        h2.start() 

    def estiFolderOpen(self):
        webbrowser.open(URL)
        # path = os.path.realpath('./src')
        # os.startfile(path)

    def resultFolderOpen(self):
        path = os.path.realpath('./src')
        os.startfile(path)


if __name__ == "__main__" :
    app = QApplication(sys.argv) 
    myWindow = WindowClass() 
    myWindow.show() 
    app.exec_()

I'll be waiting for the reply. Thank you.

봉승우
  • 99
  • 1
  • 5

0 Answers0