본문 바로가기

카테고리 없음

PySide6를 사용하여 GUI 애플리케이션 만들기: 초보자 가이드

PySide6를 사용하여 GUI 애플리케이션 만들기: 초보자 가이드

1. 기본 GUI 애플리케이션 만들기

PySide6에서 가장 기본적인 GUI 애플리케이션은 QApplicationQMainWindow 클래스를 사용하여 만듭니다. 다음은 기본 애플리케이션 코드입니다:

import sys
from PySide6.QtWidgets import QApplication, QMainWindow

# 기본 애플리케이션 클래스 정의
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 GUI 초보자 가이드")
        self.setGeometry(100, 100, 800, 600)  # 창 위치와 크기 설정

# 애플리케이션 실행 코드
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

위 코드를 실행하면 빈 창이 생성됩니다. setWindowTitle 메서드로 창 제목을 설정하고, setGeometry로 창의 크기와 위치를 지정할 수 있습니다.

 

2. 버튼 추가하기

PySide6에서는 QPushButton 위젯을 사용하여 버튼을 추가할 수 있습니다. 버튼을 클릭했을 때 동작을 정의하기 위해 신호와 슬롯(Signals and Slots)을 사용합니다.

from PySide6.QtWidgets import QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 버튼 예제")

        # 버튼 생성
        button = QPushButton("클릭하세요", self)
        button.setGeometry(100, 100, 200, 50)  # 버튼 위치와 크기 설정

        # 버튼 클릭 시 실행할 동작 정의
        button.clicked.connect(self.on_button_click)

    def on_button_click(self):
        print("버튼이 클릭되었습니다!")

clicked.connect를 사용하여 버튼 클릭 이벤트를 처리할 수 있습니다. 위 코드를 실행하고 버튼을 클릭하면 터미널에 메시지가 출력됩니다.

 

3. 라벨 추가하기

QLabel을 사용하여 텍스트 라벨을 추가할 수 있습니다. 라벨은 애플리케이션에서 정보를 표시하는 데 유용합니다.

from PySide6.QtWidgets import QLabel

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 라벨 예제")

        # 라벨 생성
        label = QLabel("안녕하세요, PySide6!", self)
        label.setGeometry(100, 50, 300, 50)  # 라벨 위치와 크기 설정
        label.setStyleSheet("font-size: 18px; color: blue;")  # 스타일 설정

setStyleSheet 메서드를 사용하면 라벨의 텍스트 스타일을 쉽게 설정할 수 있습니다.

 

4. 데이터 테이블 추가하기

QTableWidget은 테이블 형식의 데이터를 표시하는 데 사용됩니다. 행과 열의 크기를 지정하고 데이터를 삽입할 수 있습니다.

from PySide6.QtWidgets import QTableWidget, QTableWidgetItem

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 데이터 테이블 예제")

        # 테이블 위젯 생성
        table = QTableWidget(self)
        table.setRowCount(3)  # 행 개수 설정
        table.setColumnCount(2)  # 열 개수 설정
        table.setGeometry(50, 100, 400, 300)  # 테이블 위치와 크기 설정

        # 테이블 헤더 추가
        table.setHorizontalHeaderLabels(["이름", "나이"])

        # 데이터 삽입
        table.setItem(0, 0, QTableWidgetItem("홍길동"))
        table.setItem(0, 1, QTableWidgetItem("25"))
        table.setItem(1, 0, QTableWidgetItem("김철수"))
        table.setItem(1, 1, QTableWidgetItem("30"))
        table.setItem(2, 0, QTableWidgetItem("이영희"))
        table.setItem(2, 1, QTableWidgetItem("22"))

위 코드에서는 3개의 행과 2개의 열을 가진 테이블을 생성하고, 데이터를 채워 넣습니다. setHorizontalHeaderLabels로 열의 제목을 설정할 수 있습니다.

 

5. 입력 필드 추가하기

QLineEdit은 텍스트를 입력받을 수 있는 필드를 제공합니다. 예를 들어 사용자가 입력한 값을 버튼 클릭 이벤트와 연동할 수 있습니다.

from PySide6.QtWidgets import QLineEdit

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 입력 필드 예제")

        # 입력 필드 생성
        self.input_field = QLineEdit(self)
        self.input_field.setPlaceholderText("여기에 입력하세요")
        self.input_field.setGeometry(100, 50, 200, 30)

        # 버튼 생성
        button = QPushButton("확인", self)
        button.setGeometry(100, 100, 100, 30)
        button.clicked.connect(self.display_input)

    def display_input(self):
        print(f"입력된 값: {self.input_field.text()}")

QLineEditsetPlaceholderText를 사용하면 필드에 힌트 텍스트를 표시할 수 있습니다.

 

6. 콤보박스 추가하기

QComboBox는 드롭다운 메뉴를 제공합니다. 사용자가 선택할 수 있는 여러 옵션을 추가할 수 있습니다.

from PySide6.QtWidgets import QComboBox

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 콤보박스 예제")

        # 콤보박스 생성
        combo_box = QComboBox(self)
        combo_box.setGeometry(100, 50, 200, 30)
        combo_box.addItems(["옵션 1", "옵션 2", "옵션 3"])

        # 선택 변경 시 동작 정의
        combo_box.currentIndexChanged.connect(self.on_selection_change)

    def on_selection_change(self, index):
        print(f"선택된 옵션: {index}")

addItems를 사용하여 여러 옵션을 추가할 수 있으며, currentIndexChanged 신호를 통해 선택된 옵션의 인덱스를 확인할 수 있습니다.

 

Pyside6 GUI 기능이 너무 많아 오늘의 포스팅은 여기서 마무리 하겠습니다.

위 샘플 코드를 응용해 GUI 구성을 할수 있으며 테스트를 먼저 진행하여 내가 원하는 결과가 잘 나오는지 먼저 점검후 진행하는것이 시간을 아끼는 길입니다. 확인을 귀찮아 하면 나중에 더 고생하니 꼭 명심하시기 바랍니다.