Skip to content
toylee blog · 컴퓨터, 프로그램 정보 공유

toylee blog · 컴퓨터, 프로그램 정보 공유

PyQt6 스레딩(Threading) GUI 애플리케이션 작성

toylee, 2023년 06월 10일

PyQt6는 파이썬에서 GUI 애플리케이션을 작성하는 데 유용한 라이브러리 중 하나입니다. PyQt6는 이벤트 루프와 같은 동작 방식으로 인해 PyQt6 스레딩(Threading) 모델에서 작동합니다. 그러나 대부분의 GUI 애플리케이션은 여러 가지 작업을 수행하고 결과를 표시해야 하기 때문에 다중 스레드 환경에서 작동하는 것이 더 효율적일 수 있습니다.

[목차]

  • 스레드(Thread)란?
  • PyQt6 스레딩(Threading) 사용하기
  • 결론

이번 글에서는 PyQt6의 다중 스레드 환경에서 GUI 애플리케이션을 작성하는 방법에 대해 알아보겠습니다. 다중 쓰레드를 사용하면 애플리케이션의 성능이 향상되고, 사용자 인터페이스가 더 반응성이 높아질 수 있습니다.

스레드(Thread)란?

스레드는 프로그램에서 실행되는 실행 흐름 단위입니다. 각 스레드는 독립적인 실행 흐름으로, 동시에 여러 작업을 수행할 수 있습니다. PyQt6에서는 QThread 클래스를 통해 다중 스레드를 구현할 수 있습니다. QThread는 PyQt6의 이벤트 루프를 사용하므로 스레드 간 통신이 간편합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import sys
from PyQt6.QtCore import Qt, QThread, QTimer
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget
 
# 커스텀 스레드 클래스
class WorkerThread(QThread):
    def run(self):
        # 시간이 오래 걸리는 작업을 여기에서 수행합니다
        for i in range(5):
            self.sleep(1)  # 작업을 시뮬레이션하기 위해 잠시 멈춥니다
            self.update_progress.emit(i + 1)
 
# GUI 창
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle(“멀티스레딩 예제”)
        self.setGeometry(100, 100, 300, 100)
 
        # 위젯
        self.label = QLabel(“진행 상황: 0%”, self)
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.label)
 
        # 메인 위젯
        self.central_widget = QWidget(self)
        self.central_widget.setLayout(self.layout)
        self.setCentralWidget(self.central_widget)
 
        # 스레드 생성 및 연결
        self.worker_thread = WorkerThread()
        self.worker_thread.update_progress.connect(self.update_progress_label)
 
        # 스레드 시작
        self.worker_thread.start()
 
    def update_progress_label(self, progress):
        self.label.setText(f“진행 상황: {progress * 20}%”)
 
# 메인 함수
def main():
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())
 
if __name__ == “__main__”:
    main()
 
Colored by Color Scripter
cs

실행화면

PyQt6 스레딩(Threading) 2
PyQt6 스레딩(Threading)

이 예제에서는 QThread를 상속하는 커스텀 WorkerThread 클래스를 생성합니다. 이 클래스의 run 메서드에 시간이 오래 걸리는 작업을 수행하는 코드를 넣습니다. 이 예제에서는 sleep 메서드를 사용하여 작업을 시뮬레이션하고, update_progress 신호를 발생시켜 메인 GUI 스레드에 진행 상황을 전달합니다.

MainWindow 클래스는 GUI 창을 나타냅니다. 진행 상황을 표시하는 레이블을 생성하고, 레이아웃을 설정합니다. WorkerThread 클래스의 update_progress 신호를 update_progress_label 슬롯에 연결하고, 스레드를 시작합니다.

update_progress_label 슬롯은 받은 진행 상황을 레이블 텍스트로 업데이트합니다.

마지막으로, main 함수에서 QApplication 인스턴스를 생성하고 메인 창을 생성하고 보여준 뒤 이벤트 루프를 시작합니다.

이 예제는 PyQt6를 사용한 멀티스레딩의 기본 사용법을 보여주기 위한 간단한 예제입니다. 실제 상황에서는 스레드 동기화, 스레드 종료 등을 다루고 보다 복잡한 작업을 처리해야 할 수도 있습니다.

PyQt6 스레딩(Threading) 사용하기

PyQt6에서는 스레드를 구현하기 위해 QThread 클래스를 상속하는 클래스를 작성하고 run() 메서드를 오버라이드하여 스레드에서 실행할 코드를 작성합니다. 스레드에서 실행할 코드는 GUI 업데이트와 같은 작업이 아닌, 오래 걸리는 작업이어야 합니다. GUI 업데이트와 같은 작업은 스레드가 아닌 메인 스레드에서 실행되어야 합니다.

스레드를 사용하면 애플리케이션의 성능이 향상되고, 사용자 인터페이스가 더 반응성이 높아질 수 있습니다. 그러나 스레드를 사용할 때는 스레드 간 동기화와 같은 문제를 고려해야 하므로 주의가 필요합니다.

결론

이번 글에서는 PyQt6에서 다중 스레드 환경에서 GUI 애플리케이션을 작성하는 방법에 대해 알아보았습니다. 다중 스레드를 사용하면 애플리케이션의 성능이 향상되고, 사용자 인터페이스가 더 반응성이 높아질 수 있습니다. PyQt6의 QThread 클래스와 run() 메서드를 사용하여 다중 스레드를 구현할 때는 스레드 간 동기화와 같은 문제를 고려하여야 합니다. PyQt6 스레딩(Threading) 사용하는 것이 효율적이지만, 올바르게 구현하지 않으면 예기치 않은 문제가 발생할 수 있습니다.

[관련글]

인공지능 그림 사이트 Top3

ai 인공지능 챗봇 (chatbot) 무엇인가?

챗GPT 란?

html table 테이블 만들기

html 띄어쓰기 태그 사용

파이썬 PyQt6 스레딩(Threading)

글 내비게이션

Previous post
Next post

Related Posts

파이썬

PyQt6 Docker 활용 GUI 프로그램 구축

2023년 07월 05일

PyQt6 Docker 를 사용하여 애플리케이션을 컨테이너로 패키징하고 배포하는 것은 응용 프로그램의 이식성과 확장성을 높이기 좋습니다. 이를 통해, 응용 프로그램을 더욱 효율적으로 관리하고, 보다 넓은 범위의 사용자들에게 제공할 수 있습니다.

Read More

휴대폰 사진 컴퓨터로 옮기는 방법

2024년 11월 06일

휴대폰 사진을 컴퓨터로 옮기는 것은 스마트폰 사용자들이 흔히 겪는 일입니다. 많은 사람들은 사진을 저장하거나 편집하기 위해 컴퓨터로 이동해야 합니다. 그러나 이 과정이 복잡하게 느껴질 수도 있습니다. 다양한 방법이 존재하지만 각 방법은 사용자의 편의에 따라 다를 수 있습니다. 이 글에서는 여러 가지 방법으로 휴대폰의 사진을 컴퓨터로 옮기는 방법을 소개하겠습니다.    …

Read More
파이썬

Qt Designer download

2024년 06월 24일

Qt Designer는 C++와 Python을 포함한 여러 프로그래밍 언어를 사용하는 개발자들에게 필요한 도구입니다. Qt Designer의 특징과 사용법, 설치 방법, 그리고 Qt Designer download 까지 자세히 알아보겠습니다.

Read More

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • Argo Smart Routing 효과
  • CDN 캐싱 전략 성능비교
  • 동영상 CDN 비용 계산
  • 해외 쇼핑몰 CDN 최적화
  • ERP 구축 정부지원금 2025

최신 댓글

  1. 윈도우 단축키 모음 Best5의 ace
  2. http https 차이의 챗GPT 란? · Working for you

보관함

  • 2025년 5월
  • 2025년 4월
  • 2025년 3월
  • 2025년 2월
  • 2025년 1월
  • 2024년 12월
  • 2024년 11월
  • 2024년 8월
  • 2024년 6월
  • 2024년 5월
  • 2024년 3월
  • 2024년 2월
  • 2023년 11월
  • 2023년 9월
  • 2023년 8월
  • 2023년 7월
  • 2023년 6월
  • 2023년 5월
  • 2023년 4월
  • 2023년 3월
  • 2023년 2월

카테고리

  • flutter
  • html
  • linux
  • macbook
  • Pc Useful Tips
  • 미분류
  • 워드프레스
  • 자바(Java)
  • 파이썬
  • 프로그래밍
©2025 toylee blog · 컴퓨터, 프로그램 정보 공유 | WordPress Theme by SuperbThemes