PyQt6로 간단한 GUI 만들

PyQt6는 Python에서 데스크톱 애플리케이션을 만들 수 있도록 도와주는 강력한 GUI 라이브러리입니다. Qt는 크로스 플랫폼 C++ 프레임워크인 Qt를 기반으로 하며, PyQt6Qt6의 기능을 Python에서 사용할 수 있도록 지원합니다. PyQt6를 사용하면 윈도우, 버튼, 텍스트 상자, 테이블 등 다양한 위젯을 사용하여 복잡한 GUI를 구축할 수 있습니다.

1. PyQt6 설치하기

PyQt6pip를 사용하여 설치할 수 있습니다:

pip install PyQt6

2. PyQt6로 기본 윈도우 만들기

다음은 PyQt6를 사용하여 간단한 윈도우를 만드는 예제입니다.

import sys from PyQt6.QtWidgets import QApplication, QWidget # QApplication: 전체 GUI 애플리케이션을 관리하는 클래스 app = QApplication(sys.argv) # QWidget: 기본적인 윈도우를 만드는 클래스 window = QWidget() window.setWindowTitle('PyQt6 Window') window.setGeometry(100, 100, 400, 300) # 창 위치와 크기 (x, y, width, height) # 창 표시 window.show() # 이벤트 루프 실행 sys.exit(app.exec())

코드 설명

  1. QApplication: 모든 PyQt6 애플리케이션은 인스턴스를 생성해야 합니다. 이는 애플리케이션의 실행을 관리합니다.
  2. QWidget: PyQt6에서 가장 기본적인 위젯 클래스입니다. QWidget은 창, 버튼, 텍스트 상자 등을 포함한 다양한 위젯의 기본 클래스입니다.
  3. setWindowTitle(): 창의 제목을 설정합니다.
  4. setGeometry(): 창의 위치와 크기를 지정합니다. x, y는 화면에서 창의 시작 위치를 나타내며, widthheight는 창의 크기를 지정합니다.
  5. show(): 창을 화면에 표시합니다.
  6. app.exec(): 이벤트 루프를 실행하여 창이 닫힐 때까지 애플리케이션을 실행합니다.

3. PyQt6로 버튼과 레이아웃 추가하기

다음 예제에서는 QPushButtonQVBoxLayout을 사용하여 창에 버튼을 추가합니다.

import sys from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout def on_click(): print("Button clicked!") app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('PyQt6 Button Example') # 레이아웃 생성 layout = QVBoxLayout() # 버튼 생성 및 클릭 이벤트 연결 button = QPushButton('Click Me') button.clicked.connect(on_click) # 레이아웃에 버튼 추가 layout.addWidget(button) # 창에 레이아웃 설정 window.setLayout(layout) window.show() sys.exit(app.exec())

코드 설명

  1. QVBoxLayout: 위젯을 수직으로 정렬하는 레이아웃입니다.
  2. QPushButton: 버튼을 생성하는 위젯입니다.
  3. clicked.connect(on_click): 버튼이 클릭되었을 때 on_click 함수를 호출하도록 연결합니다.
  4. addWidget(): 레이아웃에 위젯(버튼)을 추가합니다.
  5. setLayout(): 창에 레이아웃을 설정하여 창 내부에 위젯들을 배치합니다.

4. PyQt6로 텍스트 입력 상자와 레이블 추가하기

다음 예제에서는 QLineEditQLabel을 사용하여 텍스트 입력 상자와 레이블을 추가하고, 버튼을 클릭하면 레이블에 입력된 텍스트를 표시합니다.

import sys from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton def show_text(): input_text = text_input.text() label.setText(f"Entered: {input_text}") app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('PyQt6 Input Example') layout = QVBoxLayout() # 텍스트 입력 상자 text_input = QLineEdit() layout.addWidget(text_input) # 레이블 label = QLabel('Enter text and click the button') layout.addWidget(label) # 버튼 button = QPushButton('Show Text') button.clicked.connect(show_text) layout.addWidget(button) # 레이아웃 설정 window.setLayout(layout) window.show() sys.exit(app.exec())

코드 설명

  1. QLineEdit: 단일 줄 텍스트 입력 상자를 생성하는 위젯입니다.
  2. QLabel: 텍스트를 표시하는 레이블 위젯입니다.
  3. text_input.text(): 텍스트 입력 상자에 입력된 텍스트를 가져옵니다.
  4. label.setText(): 레이블에 표시할 텍스트를 설정합니다.

5. 주요 PyQt6 위젯

  • QLabel: 텍스트 또는 이미지를 표시하는 레이블 위젯.
  • QPushButton: 클릭 가능한 버튼 위젯.
  • QLineEdit: 단일 줄 텍스트 입력 상자.
  • QTextEdit: 다중 줄 텍스트 편집기.
  • QComboBox: 드롭다운 목록을 표시하는 위젯.
  • QCheckBox: 체크박스 위젯.
  • QRadioButton: 라디오 버튼 위젯.
  • QVBoxLayout, QHBoxLayout: 수직/수평 레이아웃을 정렬하는 레이아웃 관리자.

6. PyQt6의 레이아웃 관리자

  • QVBoxLayout: 위젯을 수직으로 정렬하는 레이아웃.
  • QHBoxLayout: 위젯을 수평으로 정렬하는 레이아웃.
  • QGridLayout: 그리드 형식으로 위젯을 배치하는 레이아웃.
  • QFormLayout: 레이블과 입력 필드를 쌍으로 정렬하는 레이아웃.

7. PyQt6와 이벤트 핸들러

PyQt6에서는 위젯에 대한 이벤트(버튼 클릭, 텍스트 입력 등)를 처리하기 위해 시그널-슬롯 메커니즘을 사용합니다. 예를 들어, 버튼 클릭 이벤트를 처리하려면button.clicked.connect(handler_function)을 사용하여 이벤트를 핸들러 함수에 연결합니다.

요약

  • PyQt6 설치: pip install PyQt6.
  • 기본 창 만들기: QApplicationQWidget을 사용하여 간단한 창을 생성할 수 있습니다.
  • 위젯 추가: 버튼, 레이블, 입력 상자 등 다양한 위젯을 사용할 수 있습니다.
  • 레이아웃 설정: 레이아웃 관리자를 사용하여 위젯을 배치할 수 있습니다.
  • 이벤트 처리: 버튼 클릭, 텍스트 입력 등 다양한 이벤트를 처리할 수 있습니다.

댓글 쓰기

댓글 목록