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

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

PyQt6 QT Designer 사용자 지정 위젯

toylee, 2023년 05월 19일

PyQt6를 사용하면 다양한 위젯을 만들 수 있지만 때로는 기본 제공 위젯만으로는 원하는 기능을 구현하기 어려운 경우가 있습니다. 이런 경우 PyQt6 QT Designer 사용자 지정 위젯 만들기가 가능합니다. 몇가지 예시와 내용을 통해 같이 알아 보겠습니다.

[목차]

  • 1. PyQt6 사용자 지정 위젯 만들기
  • 2. Qt Designer 사용한 위젯 만들기
    • [Qt Designer 사용자 정의 위젯 설계]
    • [Qt Designer 형식에서 Python 코드 생성]
    • [Python 코드 작성 – from custom_widget_ui]
  • 3. PyQt6 사용자 지정 위젯 활용
  • 4. 결론 및 의견

1. PyQt6 사용자 지정 위젯 만들기

PyQt6에서 사용자 지정 위젯을 만드는 것은 꽤 간단합니다. 우선 PyQt6.QtWidgets.QWidget 클래스를 상속하는 새 클래스를 만듭니다. 그런 다음 새 클래스에서 사용할 모든 위젯, 레이아웃 및 다른 구성 요소를 정의합니다.

예를 들어, 새 클래스에서 QPushButton과 QLabel 위젯을 사용하려면 새 클래스에서 이러한 위젯을 만들고 배치해야합니다. 이러한 구성 요소는 원하는 기능에 따라 다양하게 조합할 수 있습니다.

PyQt6 QT Designer 사용자 지정 위젯
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
from PyQt6.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton, QLabel
 
 
class CustomWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
 
    def init_ui(self):
        layout = QVBoxLayout()
 
        button = QPushButton(“Click me”)
        label = QLabel(“Hello, World!”)
 
        layout.addWidget(button)
        layout.addWidget(label)
 
        self.setLayout(layout)
 
 
if __name__ == ‘__main__’:
    app = QApplication([])
    widget = CustomWidget()
    widget.show()
    app.exec()
 
Colored by Color Scripter
cs

2. Qt Designer 사용한 위젯 만들기

사용자 지정 위젯을 만드는 또 다른 방법은 Qt Designer를 사용하는 것입니다. Qt Designer는 PyQt6에서 GUI를 디자인하고 코드를 생성하는 데 사용되는 시각적인 도구입니다. 디자인을 마친 후 코드를 생성하면 사용자 지정 위젯을 쉽게 만들 수 있습니다. 쉽게 말하자면 파이썬 코드로 ui를 변환하여 불러오는 방법 중 하나 입니다.

ui를 유지한 상태로 파이썬에 불러오길 원한다면 아래 링크 글을 참고해주세요

PYQT GUI 기본세팅-파이썬

[Qt Designer 사용자 정의 위젯 설계]

  • Qt Designer를 시작하고 새 양식을 만듭니다.
  • 원하는 위젯(예: QPushButton 및 QLabel)을 양식으로 끌어다 놓습니다.
  • 필요에 따라 위젯의 속성, 레이아웃 및 디자인을 사용자 지정합니다.
  • 양식을 “custom_widget.ui”로 저장합니다.
QT Designer 1
QT Designer 2

[Qt Designer 형식에서 Python 코드 생성]

  • 터미널 또는 명령 프롬프트를 열고 “custom_widget.ui”가 저장된 디렉토리로 이동합니다.
  • 명령을 사용하여 pyuic6.ui 파일에서 Python 코드를 생성합니다.
1
2
pyuic6 –x custom_widget.ui –o custom_widget_ui.py
 
Colored by Color Scripter
cs
  • 이 명령은 사용자 정의 위젯의 디자인을 나타내는 코드가 포함된 “custom_widget_ui.py”라는 Python 파일을 생성합니다.ui

[Python 코드 작성 – from custom_widget_ui]

  • 별도의 Python 파일을 만들고 “main.py”라고 하고 필요한 모듈을 가져옵니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from PyQt6.QtWidgets import QApplication, QWidget
from custom_widget_ui import Ui_CustomWidget  # Import the generated custom widget class
 
class CustomWidget(QWidget, Ui_CustomWidget):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
 
if __name__ == ‘__main__’:
    app = QApplication([])
    widget = CustomWidget()
    widget.show()
    app.exec()
 
Colored by Color Scripter
cs
  • 이 코드에서 필요한 모듈을 가져오고 “custom_widget_ui.py”에서 생성된 사용자 방지 위젯 클래스( Ui_CustomWidget)를 가져옵니다.
  • QWidget및 Ui_CustomWidget모두 상속되는 새 클래스를 CustomWidget정의합니다.
  • init메서드 내에서 setupUi(self)호출하여 생성된 코드를 사용하여 사용자 정의 위젯을 설정합니다.
  • if name == ‘main‘:블록에서 QApplication제작을 CustomWidget제한하고 표시하고 애플리케이션 이벤트 루프를 시작합니다.

3. PyQt6 사용자 지정 위젯 활용

PyQt6에서 사용자 지정 위젯을 만들면 기존 위젯보다 더 큰 유연성과 기능을 제공하는 애플리케이션을 만들 수 있습니다. 예를 들어, 사용자 지정 위젯을 사용하여 데이터베이스 연결, 파일 열기 및 저장, 그래픽 표시 등을 수행하는 애플리케이션을 만들 수 있습니다. 자신만의 구성 요소를 만들어 애플리케이션을 더욱 효율적이고 유연하게 만들 수 있습니다.

PyQt6 사용자 지정 위젯 활용1
PyQt6 사용자 지정 위젯 활용2
PyQt6 사용자 지정 위젯 활용3

FileSelectionWidget이 예제에서는 사용자가 파일을 선택할 수 있도록 하는 사용자 지정 위젯을 만듭니다 . 위젯은 QPushButton파일 선택 대화 상자를 트리거하는 것과 QLabel선택한 파일 경로를 표시하는 것으로 구성됩니다.

메서드 내부에서 init_ui레이아웃을 설정하고 clicked의 신호를 메서드 select_file_button에 연결합니다 select_file.

이 select_file메서드는 사용자가 버튼을 클릭할 때 트리거됩니다. QFileDialog사용자가 파일을 선택할 수 있는 곳이 열립니다 . 파일을 선택하면 파일 경로가 에 표시됩니다 selected_file_label.

코드를 실행하면 사용자 정의 위젯이 표시되며 사용자는 “파일 선택” 버튼을 클릭하여 파일을 선택할 수 있습니다. 그러면 선택한 파일 경로가 위젯에 표시됩니다.

사용자 정의 위젯에 추가 기능을 추가하거나 애플리케이션 요구 사항에 따라 다른 기능으로 다른 사용자 정의 위젯을 생성하여 이 예제를 확장할 수 있습니다.

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
from PyQt6.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton, QLabel, QFileDialog
 
class FileSelectionWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
 
    def init_ui(self):
        layout = QVBoxLayout()
 
        self.selected_file_label = QLabel(“No file selected”)
 
        select_file_button = QPushButton(“Select File”)
        select_file_button.clicked.connect(self.select_file)
 
        layout.addWidget(select_file_button)
        layout.addWidget(self.selected_file_label)
 
        self.setLayout(layout)
 
    def select_file(self):
        file_dialog = QFileDialog()
        file_path, _ = file_dialog.getOpenFileName(self, “Select File”)
        if file_path:
            self.selected_file_label.setText(file_path)
 
if __name__ == ‘__main__’:
    app = QApplication([])
    widget = FileSelectionWidget()
    widget.show()
    app.exec()
 
Colored by Color Scripter
cs

4. 결론 및 의견

사용자 지정 위젯을 만드는 것은 모든 PyQt6 개발자에게 권장되는 기술입니다. 사용자 지정 위젯을 만들면 더욱 효율적이고 유연한 애플리케이션을 만들 수 있습니다. 이제 PyQt6 QT Designer 사용자 지정 위젯 방을 알게되었으니, 여러분도 한번 도전해보세요!

[관련글]

PyQt6 계산기 만들기
파이썬 GUI 라이브러리 – PYQT, TKINTER, KIVY

python tkinter gui 만들기

python tkinter 란?

파이썬 qt designer

글 내비게이션

Previous post
Next post

Related Posts

파이썬

Pyqt6 QML GUI 사용

2023년 05월 24일

PyQt6와 QML을 소개하고자 합니다. PyQt6는 파이썬과 Qt 프레임워로, 사용자 인터페이스(UI)를 만들 수 있습니다. QML을 사용하면 직관적으로 구현할 수 있습니다. Pyqt6 QML GUI 사용 및 예제를 같이 알아보겠습니다.

Read More
파이썬

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

2023년 06월 10일

PyQt6는 파이썬에서 GUI 애플리케이션을 작성하는 데 유용한 라이브러리 중 하나입니다. PyQt6는 이벤트 루프와 같은 동작 방식으로 인해 PyQt6 스레딩(Threading) 모델에서 작동합니다.

Read More
파이썬

데이터시각화 PyQt 사용 방법

2023년 06월 18일

데이터 분석 및 시각화의 세계에서 인터랙티브하고 시각적으로 매력적인 데이터 표현을 생성하는 것은 통찰력을 얻고 정보를 효과적으로 전달하는 데 필수적입니다. 데이터시각화 PyQt 사용을 통한 공부 같이 시작해 볼까요?

Read More

답글 남기기 응답 취소

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

최신 글

  • usb 쓰기금지 해제방법, 어렵지 않아요
  • usb a타입에 대해 알아보자
  • 포토샵 누끼따기 방법
  • vpn 연결방법 쉽게 설명해드립니다.
  • usb 장치 인식 실패시 해결방안

최신 댓글

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

보관함

  • 2025년 6월
  • 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