목록분류 전체보기 (25)
DevStudy

QPushButton 푸시 버튼 (push button) 또는 명령 버튼 (command button)은 사용자의 명령에 따라 프로그램이 어떤 동작을 하도록 할 때 사용되는 버튼이며, GUI 프로그래밍에서 가장 중요하고 흔하게 사용되는 위젯입니다. 푸시 버튼은 QPushButton 클래스로 만들 수 있는데, 푸시 버튼과 함께 자주 쓰이는 메서드와 시그널을 아래 표에 정리했습니다. (QPushButton 공식 문서 참고) 자주 쓰이는 메서드 메서드설명 setCheckable() True 설정 시, 누른 상태와 그렇지 않은 상태를 구분합니다. toggle() 상태를 바꿉니다. setIcon() 버튼의 아이콘을 설정합니다. setEnabled() False 설정 시, 버튼을 사용할 수 없습니다. isCheck..

그리드 레이아웃 가장 일반적인 레이아웃 클래스는 ‘그리드 레이아웃 (grid layout)’입니다. 이 레이아웃 클래스는 위젯의 공간을 행 (row)과 열 (column)로 구분합니다. 그리드 레이아웃을 생성하기 위해 QGridLayout 클래스를 사용합니다. (QGridLayout 공식 문서) 그리드 레이아웃. 위 예시 다이얼로그의 경우, 세 개의 행 (row)과 다섯 개의 열 (column)로 구분되어 있고 필요한 위치에 위젯을 배치했습니다. 예제 ## Ex 4-3. 그리드 레이아웃. import sys from PyQt5.QtWidgets import (QApplication, QWidget, QGridLayout, QLabel, QLineEdit, QTextEdit) class MyApp(QWid..

박스 레이아웃 박스 레이아웃 클래스를 이용하면 훨씬 유연하고 실용적인 레이아웃을 할 수 있습니다. (QBoxLayout 공식 문서 참고) QHBoxLayout, QVBoxLayout은 여러 위젯을 수평으로 정렬하는 레이아웃 클래스 입니다. QHBoxLayout, QVBoxLayout 생성자는 수평, 수직의 박스를 하나 만드는데, 다른 레이아웃 박스를 넣을 수도 있고 위젯을 배치할 수도 있습니다. 예제 코드에서 위젯의 가운데 아래 부분에 두 개의 버튼을 배치하기 위해 수평, 수직의 박스를 하나씩 사용합니다. 필요한 공간을 만들기 위해 addStretch() 메서드를 사용하고, ‘stretch factor’를 조절해 보겠습니다. 예제 ## Ex 4-2. 박스 레이아웃. import sys from PyQt5..

절대적 배치 절대적 배치 (Absolute positioning) 방식은 각 위젯의 위치와 크기를 픽셀 단위로 설정해서 배치합니다. 절대적 배치 방식을 사용할 때는 다음의 제약을 이해하고 있어야 합니다. 창의 크기를 조절해도 위젯의 크기와 위치는 변하지 않는다. 다양한 플랫폼에서 어플리케이션이 다르게 보일 수 있다. 어플리케이션의 폰트를 바꾸면 레이아웃이 망가질 수 있다. 레이아웃을 바꾸고 싶다면 완전히 새로 고쳐야 하며, 이는 매우 번거롭다. 두 개의 라벨과 두 개의 푸시버튼 위젯을 절대적 배치 방식으로 배치해 보겠습니다. 예제 ## Ex 4-1. 절대적 배치. import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButt..

스타일 꾸미기 어플리케이션 안의 다양한 구성 요소들의 스타일을 자유롭게 꾸밀 수 있습니다. setStyleSheet()을 이용해서 구성 요소의 스타일을 설정하는 방법에 대해 소개합니다. 예제 ## Ex 3-10. 스타일 꾸미기. import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): lbl_red = QLabel('Red') lbl_green = QLabel('Green') lbl_blue = QLabel('Blue') lbl_red.setStyleS..

날짜와 시간 표시하기 QtCore 모듈의 QDate, QTime, QDateTime 클래스를 이용해서 어플리케이션에 날짜와 시간을 표시할 수 있습니다. 각 클래스에 대한 자세한 설명은 아래 링크를 참고하세요. QDate 공식 문서 QTime 공식 문서 QDateTime 공식 문서 날짜 표시하기 QDate 클래스는 날짜와 관련된 기능들을 제공합니다. 현재 날짜 출력하기 우선 QDate 클래스를 이용해서 날짜를 출력해 보겠습니다. from PyQt5.QtCore import QDate now = QDate.currentDate() print(now.toString()) currentDate() 메서드는 현재 날짜를 반환합니다. toString() 메서드를 통해 현재 날짜를 문자열로 출력할 수 있습니다. 결과..

창을 화면의 가운데로 프로그램이 실행될 때 창에 나타나는 위치를 조절할 수 있습니다. 위의 그림과 같이 창을 모니터 화면의 가운데에 나타내는 방법에 대해 소개합니다. 예제 ## Ex 3-8. 창을 화면의 가운데로. import sys from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('Centering') self.resize(500, 350) self.center() self.show() def center(self): qr = self..

툴바 만들기 메뉴가 어플리케이션에서 사용되는 모든 명령의 모음이라면, 툴바 (toolbar)는 자주 사용하는 명령들을 더 편리하게 사용할 수 있도록 해줍니다. (QToolBar 공식 문서) 우선 폴더 안에 툴바의 각 기능에 해당하는 아이콘들을 저장해 둡니다. save.png edit.png print.png exit.png 예제 ## Ex 3-7. 툴바 만들기. import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp from PyQt5.QtGui import QIcon class MyApp(QMainWindow): def __init__(self): super().__init__() self.initUI() def i..

메뉴바 만들기 GUI 어플리케이션에서 메뉴바 (menu bar)는 흔하게 사용됩니다. 다양한 명령들의 모음이 메뉴바에 위치합니다. (QMenuBar 공식 문서) macOS에서는 메뉴바를 다르게 다루는데, 아래 예제에서 볼 수 있듯이 한 줄의 코드 (menubar.setNativeMenuBar(False))를 추가함으로써 macOS에서도 Windows 환경과 동일한 결과를 얻을 수 있습니다. 우선 폴더 안에 아래와 같이 메뉴에 해당하는 아이콘 (exit.png)을 저장해 둡니다. 예제 ## Ex 3-6. 메뉴바 만들기. import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp from PyQt5.QtGui import Q..

상태바 만들기 메인 창의 레이아웃. 메인 창 (Main window)은 메뉴바, 툴바, 상태바를 갖는 전형적인 어플리케이션 창입니다. (QMainWindow 공식 문서) 메인 창은 QMenuBar, QToolBar, QDockWidget, QStatusBar를 위한 고유의 레이아웃을 갖고 있습니다. 가운데 영역에는 중심 위젯 (Central widget)을 위한 영역을 갖고 있습니다. 중심 위젯에는 어떠한 위젯도 들어올 수 있습니다. QMainWindow 클래스를 이용해서 메인 어플리케이션 창을 만들 수 있습니다. 우선 QStatusBar를 이용해서 메인 창에 상태바 (status bar)를 하나 만들어 보겠습니다. 상태바는 어플리케이션의 상태를 알려주기 위해 어플리케이션의 하단에 위치하는 위젯입니다. ..