Pyqt6 Qthred 에서 Ui 함수 사용하기
831
작성한 질문수 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()
20번강좌에 대한 질문입니다.
0
2
1
6-6
0
14
1
작업형 1 유형 부분
0
13
1
수강평 이벤트
0
20
2
작업형 1 (삭제예정, 구 버전)
0
33
2
강의노트는 어디있나요?
0
21
1
노션 학습 자료 권한 요청
0
17
1
수강기간 연장 문의드립니다.
0
23
1
2유형 레이블 인코딩 VS 원핫 인코딩
0
25
3
part2강의 문의사항입니다.
0
21
2
수강기간 연장 문의드립니다.
0
27
1
인덱스 슬라이싱
0
28
2
코드를 첨부해야하는 이유가 있나요?
0
22
2
소리가 겹쳐서 들려요
0
23
2
데스크톱과 노트북 연결
0
29
1
dict, zip
0
21
2
노션 : 파트3번 링크와 권한 , 파트4번 권한요청, 파트 5번도 미리 요청 드립니다.
0
27
4
6-6 실습 문의
0
25
2
미션 06-02
0
24
2
yes24 수집 md 파일 만들 때
0
24
2
python main.py 실행시 게임이 실행이 안돼요
0
27
2
antigravity 대신 cursor를 활용해도 되나요?
0
28
1
뉴스 검색 분류 한도초과
0
36
2
완성자료
0
26
2





