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.