Pyqt6 Qthred 에서 Ui 함수 사용하기
841
정민기
작성한 질문수 1
1
이런 식으로 코드를 사용중입니다
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
class thread (Qthread):
def __init__(self):
super().__init__()
def run(self):
while True:
mainbot_window.fun1()
class UI (QWidget):
def __init__(self):
super().__init__()
self.inits()
self.T1 = thread()
self.T1.start()
def inits(self):
print("각종 변수 설정")
def fun1(self):
print("run code")
def main(args=None):
global mainbot_window
app = QApplication(sys.argv)
mainbot_window = UI()
mainbot_window.show()
try:
app.exec()
except KeyboardInterrupt:
pass
if __name__ == '__main__':
main()여기서 global 변수를 사용하지 않고 싶습니다.
글로벌 변수를 사용하지 않고 Thread 에서 Qwidget 의 함수를 사용할 방법이 있을까요?
시도한것
thread 에서 pyqtsignal.emit 을 사용해서 시도해봤는데 ui가 검은 화면으로 뜬체 작동하지않습니다.
Qthread 대신 Qtimer 를 사용 =>작동은 잘되나 ui를 표시하는데 약간의 딜레이가 생깁니다. 그래서 되도록이면 Thread를 사용하고싶습니다.
답변 1
2
이렇게 하는 건 어떠신가요.
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
import sys
class thread (QThread):
def __init__(self, ui):
super().__init__()
self.ui = ui
def run(self):
while True:
# mainbot_window.fun1()
self.ui.fun1() # 추가 코드
class UI (QWidget):
def __init__(self):
super().__init__()
self.inits()
self.T1 = thread(ui=self) # 수정 코드
self.T1.start()
def inits(self):
print("각종 변수 설정")
def fun1(self):
print("run code")
def main(args=None):
# global mainbot_window
app = QApplication(sys.argv)
mainbot_window = UI()
mainbot_window.show()
try:
app.exec()
except KeyboardInterrupt:
pass
if __name__ == '__main__':
main()
기출 11회 작업형 2_전체 데이터 학습 여부
0
11
1
RateLimitError
0
7
2
예측값 결과 소수점 차이
0
16
2
여태까지 발견한 이슈들 공유드립니다.
1
16
1
기출 문제와 실전챌린지 연습문제 무엇부터 푸는게 나은가요?
0
13
0
전처리 train() test([ ])
0
14
2
작업형 1 배경지식 질문
0
17
2
옳게 풀은건지 질문드립니다!
0
13
1
roc_auc_score
0
22
2
재귀함수 연산법
0
11
2
추가질문 합니다
0
13
2
시험환경 구름
0
16
2
2유형 질문드려요
0
13
2
RandomForest vs lgb
0
22
2
전처리 관련질문
0
21
3
수강기간즘연장해주세요
0
12
1
작업형3 기출
0
15
2
유형2에서 데이터분할 생략 가능여부
0
27
2
9회 기출 유형3 질문
0
17
2
lgb 기초편
0
12
1
수업자료 문의
0
18
2
괄호 사용
0
20
2
작업형 2 데이터 전처리 질문
0
20
1
11회 기출 유형 작업형1 문제 3-1
0
17
1





