inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Pyqt6 Qthred 에서 Ui 함수 사용하기

831

정민기

작성한 질문수 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 의 함수를 사용할 방법이 있을까요?

시도한것

  1. thread 에서 pyqtsignal.emit 을 사용해서 시도해봤는데 ui가 검은 화면으로 뜬체 작동하지않습니다.

  2. Qthread 대신 Qtimer 를 사용 =>작동은 잘되나 ui를 표시하는데 약간의 딜레이가 생깁니다. 그래서 되도록이면 Thread를 사용하고싶습니다.

python pyqt pyqy6 threading qtread

답변 1

2

DEV MOO

이렇게 하는 건 어떠신가요.

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()

 

0

정민기

감사합니다! 잘 작동됩니다.

모델 서빙과 관련된 강좌 출시 예정된 바가 있으신지 여쭤봅니다!

0

2

1

모델 서빙과 관련된 강좌가 출시되는지 질문드립니다.

0

2

1

20번강좌에 대한 질문입니다.

0

5

1

6-6

0

16

1

작업형 1 유형 부분

0

13

1

수강평 이벤트

0

21

2

작업형 1 (삭제예정, 구 버전)

0

34

2

강의노트는 어디있나요?

0

21

1

노션 학습 자료 권한 요청

0

17

1

수강기간 연장 문의드립니다.

0

23

1

2유형 레이블 인코딩 VS 원핫 인코딩

0

25

3

part2강의 문의사항입니다.

0

22

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

25

2

python main.py 실행시 게임이 실행이 안돼요

0

27

2

antigravity 대신 cursor를 활용해도 되나요?

0

28

1