1. 기본 GUI 애플리케이션 만들기
PySide6에서 가장 기본적인 GUI 애플리케이션은 QApplication과 QMainWindow 클래스를 사용하여 만듭니다. 다음은 기본 애플리케이션 코드입니다:
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()}")
QLineEdit의 setPlaceholderText를 사용하면 필드에 힌트 텍스트를 표시할 수 있습니다.
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 구성을 할수 있으며 테스트를 먼저 진행하여 내가 원하는 결과가 잘 나오는지 먼저 점검후 진행하는것이 시간을 아끼는 길입니다. 확인을 귀찮아 하면 나중에 더 고생하니 꼭 명심하시기 바랍니다.