Pyqt6 Qthred 에서 Ui 함수 사용하기
844
작성한 질문수 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()
섹션2 질문이요
0
8
1
섹션 2
0
5
1
섹션1.9 질문입니다!
0
15
2
웹서비스 방법
0
14
0
MCP 정의가 잘못되어 있음 (Chapter2)
0
19
1
수강 연장 문의드립니다.
0
20
2
13. (App 2) 기본기 훈련 에서
0
18
1
채점 프로그램 미작동
0
15
2
챌린지 시작일 문의
0
23
0
2. 어떤 도구를 사용하는 것이 가장 유리할까? 강의 중
0
21
1
안녕하세요 ppt 자료 메일로 부탁드립니다
0
15
1
11차시 Antigravity IDE 설치 후
0
21
1
링크드 리스트 중간 삽입삭제 시간복잡도 질문
0
16
1
Kaggle 노트북(predict.ipynb) 관련
0
21
1
처음 에이전트 설정을 잘못 했을 경우 수정 하는 방법
0
19
1
강의 연장 문의
0
25
2
수강 신청 연장 문의드립니다.
0
32
2
26년2회 실기기출은 언제쯤...
0
34
2
재귀함수 종료조건
0
18
1
git bash .env
1
19
1
예제 001 실행 안됩니다.
0
27
3
ipython 설치가 안되는거 같습니다.
0
22
1
이론 공부법 요약본 버전 업데이트 문의
0
35
2
피드백 내용 문의드립니다.
0
36
1





