3. PySide6
8강. 레이아웃 종합 예제
8강. 레이아웃 종합 예제
2025.12.031. 실습 예제더보기A. 구현 목표 텍스트 입력창은 넓게 늘어남버튼1은 공간을 가장 많이 차지함(stretch=2 적용)버튼2, 버튼3은 동일한 크기 B. 파일 구조widget.pymain.pyfrom PySide6.QtWidgets import QWidget, QLabel, QHBoxLayout, QVBoxLayout, QSizePolicy, QLineEdit, QPushButtonclass SizePolicyExample(QWidget): def __init__(self): super().__init__() self.setWindowTitle("사이즈 정책(SizePolicy) 및 스트레치 학습") C. SizePolicy(사이즈 정책) C.1 SizePoli..
7강. 주요 레이아웃 기능 살펴보기
7강. 주요 레이아웃 기능 살펴보기
2025.12.021. Stretch Factor 예제: 레이아웃 안의 남는 여유 공간을, 각 위젯에게 “어떤 비율로 나눠줄지” 결정하는 값더보기import sysfrom PySide6.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayoutclass StretchExample(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Stretch Factor 예제") btn1 = QPushButton("버튼 1 (비율 1)") btn2 = QPushButton("버튼 2 (비율 2)") btn3 = QPushButton("버튼 ..
6강. Nesting Layouts
6강. Nesting Layouts
2025.12.021. 레이아웃 중첩(Nesting Layouts): 복잡한 화면은 레이아웃 안에 레이아웃을 또 넣어서 만든다.더보기import sysfrom PySide6.QtWidgets import ( QApplication, QWidget, QPushButton, QVBoxLayout, QHBoxLayout, QLabel)class NestedLayout(QWidget): def __init__(self): super().__init__() self.setWindowTitle("중첩 레이아웃 예제") self.resize(320, 220) # [0] 제목용 레이블 title_label = QLabel("빈 레이블에 출력") ..
5강. QFormLayout
5강. QFormLayout
2025.12.021. QFormLayout: 라벨 + 입력 필드 폼 레이아웃: “라벨 + 입력 위젯”을 2열 구조로 자동 배치해주는 레이아웃 공식문서더보기위젯 쌍(라벨—위젯) 기반 UI는 대부분 QFormLayout이 가장 깔끔합니다.QFormLayout은 2열 구조(레이블/위젯) 를 손쉽게 만들 수 있고,addRow("이름:", lineEdit) 처럼 문자열 + 위젯 조합도 가능.import sysfrom PySide6.QtWidgets import ( QApplication, QWidget, QPushButton, QLineEdit, QFormLayout)class FormExample(QWidget): def __init__(self): super().__init__() ..
4강. QGridLayout
4강. QGridLayout
2025.12.021. QGridLayout: 표(그리드) 레이아웃: 행/열로 위젯을 배치하는 2차원 레이아웃 공식문서더보기import sysfrom PySide6.QtWidgets import ( QApplication, QWidget, QPushButton, QGridLayout)class GridExample(QWidget): def __init__(self): super().__init__() b1 = QPushButton("One") b2 = QPushButton("Two") b3 = QPushButton("Three") b4 = QPushButton("Four") b5 = QPushButton("Five") la..
3강. QVBoxLayout
3강. QVBoxLayout
2025.12.021. QVBoxLayout: 세로 방향 레이아웃 공식문서더보기import sysfrom PySide6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayoutclass VBoxExample(QWidget): def __init__(self): super().__init__() btn1 = QPushButton("One") btn2 = QPushButton("Two") btn3 = QPushButton("Three") layout = QVBoxLayout(self) layout.addWidget(btn1) layout.addWidget(btn2) ..
2강. QHBoxLayout
2강. QHBoxLayout
2025.12.021. QHBoxLayout: 가로 방향 레이아웃 공식문서더보기 1.1. 기본 구조 레이아웃에 버튼, 입력창과 같은 요소를 추가(addWidget)하여 구조를 만들고,이 구조를 화면 위젯에 지정(setWidget) 합니다.import sysfrom PySide6.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayoutclass HBoxExample(QWidget): def __init__(self): super().__init__() # 버튼 3개를 생성합니다. (widget에 등록된 상태가 아닙니다.) btn1 = QPushButton("One") btn2 = QPushButton("Two..
1강. 레이아웃 살펴보기
1강. 레이아웃 살펴보기
2025.12.010. 학습 목표더보기이번 단계에서는 PySide6에서 화면 위젯을 배치할 때 사용하는 레이아웃(Layout)의 개념을 학습합니다. GUI 프로그램에서는 버튼, 라벨, 입력창 같은 위젯을 화면에 보기 좋게 배치해야 합니다.이때 위젯의 위치와 크기를 직접 계산해서 배치할 수도 있지만, 창 크기가 바뀌거나 위젯이 추가되면 관리가 어려워집니다. Qt에서는 이런 문제를 해결하기 위해 레이아웃 시스템을 제공합니다.레이아웃은 부모 위젯 안에서 자식 위젯들의 위치와 크기를 자동으로 관리해 주는 구조입니다.학습 목표내용레이아웃 개념 이해Layout이 화면 구성과 위젯 배치를 의미한다는 점을 이해합니다.Qt 레이아웃 관리 이해부모 위젯 안에서 자식 위젯의 위치와 크기를 자동으로 관리하는 구조를 이해합니다.주요 레이아웃 종..
Layout
Layout
2025.12.01
6강. 다중 시그널/단일 슬롯
6강. 다중 시그널/단일 슬롯
2025.12.010. 학습 목표더보기이번 단계에서는 여러 Signal을 하나의 Slot에 연결하는 구조를 학습합니다. 앞의 3.5 단계에서는 하나의 Signal에 여러 Slot을 연결하는 구조를 살펴보았습니다.이번 단계에서는 반대로, 여러 위젯의 Signal을 하나의 Slot 함수에 연결하는 구조를 살펴봅니다. 예제에서는 QSlider와 QDial을 함께 사용합니다.슬라이더를 움직여도, 다이얼을 돌려도 같은 Slot 함수가 실행되도록 구성합니다.학습 목표내용다중 Signal / 단일 Slot 이해여러 Signal을 하나의 Slot 함수에 연결할 수 있음을 이해합니다.QSlider와 QDial 이해슬라이더와 다이얼이 모두 valueChanged(int) Signal을 발생시킬 수 있음을 이해합니다.공통 Slot 함수 구현..
5강. 단일 시그널/다중 슬롯
5강. 단일 시그널/다중 슬롯
2025.12.010. 학습 목표더보기이번 단계에서는 하나의 Signal에 여러 Slot을 연결하는 구조를 학습합니다. 앞에서는 QSlider의 valueChanged(int) Signal을 하나의 Slot 함수와 연결하고,사용자 정의 Signal을 만들어 값을 다시 전달하는 구조를 살펴보았습니다.이번 단계에서는 한 단계 더 나아가, 같은 Signal을 여러 Slot 함수에 동시에 연결해 봅니다. 예를 들어 슬라이더 값이 바뀌면 Label도 바뀌고, ProgressBar도 함께 바뀌게 만들 수 있습니다.또한 사용자 정의 Signal이 발생하면 처리된 값을 Label에도 표시하고, LCDNumber에도 표시할 수 있습니다.학습 목표내용단일 Signal / 다중 Slot 이해하나의 Signal에 여러 Slot 함수를 연결할 ..
4강. 사용자 정의 시그널 구현
4강. 사용자 정의 시그널 구현
2025.12.010. 학습 목표더보기이번 단계에서는 사용자 정의 Signal을 직접 만들어 사용하는 방법을 학습합니다. 이전 단계에서는QSlider의 valueChanged(int) Signal을 사용하여 슬라이더 값이 Slot 함수로 전달되는 구조를 살펴보았습니다. 이번 단계에서는한 단계 더 나아가, Slot 함수 안에서 값을 처리한 뒤 새로운 Signal을 직접 발생시키는 구조를 구현합니다. 즉, Qt가 미리 제공하는 Signal만 사용하는 것이 아니라,개발자가 필요한 목적에 맞게 Signal을 직접 정의하고 emit()으로 발생시키는 방법을 이해합니다.학습 목표내용사용자 정의 Signal 이해PySide6에서 개발자가 직접 Signal을 선언하는 방법을 이해합니다.Signal 선언 위치 이해Signal은 인스턴스 ..