[ PyQt ] Layout Widget
반응형
1. Layout이란 : GUI 프로그래밍에서 위젯을 배치하기 위한 방법
- Layout 설정이 필요한 이유 : 아래와 같이 위젯의 크가와 위치를 명시적으로 설정하면 화면의 크기를 변경할 때 문제가 발생함
import sys from PyQt5.QtWidgets import * class MyWindow(QWidget): def __init__(self): super().__init__() self.setupUI() def setupUI(self): self.setGeometry(800, 200, 500, 500) self.textEdit = QTextEdit(self) self.textEdit.resize(480, 450) self.textEdit.move(10, 10) self.pushButton= QPushButton('Save', self) self.pushButton.resize(480, 25) self.pushButton.move(10, 470) if __name__ == "__main__": app = QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()

- 이러한 문제는 PyQt에서만 있는 것이 아니고 GUI 프로그래밍에서 공통으로 발생하는 문제입니다. 이러한 문제를 해결하는 고전적인 방법은 윈도우의 크기가 변경될 때 발생하는 시그널과 이를 처리하는 슬롯을 연결한 후, 해당 슬롯 내에서 윈도우 내부의 위젯의 크기와 위치를 다시 계산한 후 재설정하는 것이지만 PyQt는 이러한 문제를 쉽게 해결하고자 아래 다섯 가지의 Layout 클래스를 제공합니다.
- QVBoxLayout
- QHBoxLayout
- QBoxLayout
- QGridLayout
- QLayout
2. QVBoxLayout
- 위젯을 수직 방향으로 나열함
import sys from PyQt5.QtWidgets import * class MyWindow(QWidget): def __init__(self): super().__init__() self.setupUI() def setupUI(self): self.setGeometry(800, 200, 500, 500) self.textEdit = QTextEdit(self) #self.textEdit.resize(480, 450) #self.textEdit.move(10, 10) self.pushButton= QPushButton('Save', self) #self.pushButton.resize(480, 25) #self.pushButton.move(10, 470) layout = QVBoxLayout() layout.addWidget(self.textEdit) layout.addWidget(self.pushButton) self.setLayout(layout) if __name__ == "__main__": app = QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()



3. QHBoxLayout
- 위젯을 수평 방향으로 나열함
import sys from PyQt5.QtWidgets import * class MyWindow(QWidget): def __init__(self): super().__init__() self.setupUI() def setupUI(self): self.setGeometry(800, 200, 500, 500) self.textEdit = QTextEdit(self) #self.textEdit.resize(480, 450) #self.textEdit.move(10, 10) self.pushButton= QPushButton('Save', self) #self.pushButton.resize(480, 25) #self.pushButton.move(10, 470) layout = QHBoxLayout() layout.addWidget(self.textEdit) layout.addWidget(self.pushButton) self.setLayout(layout) if __name__ == "__main__": app = QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()



4. QGridLayout
- 위젯을 격자(그리드) 형태로 나열함
import sys from PyQt5.QtWidgets import * class MyWindow(QWidget): def __init__(self): super().__init__() self.setupUI() def setupUI(self): self.setGeometry(800, 200, 300, 100) self.label1 = QLabel("ID: ") self.label2 = QLabel("Password: ") self.lineEdit1 = QLineEdit() self.lineEdit2 = QLineEdit() self.pushButton1= QPushButton("Sign In") layout = QGridLayout() layout.addWidget(self.label1, 0, 0) layout.addWidget(self.lineEdit1, 0, 1) layout.addWidget(self.pushButton1, 0, 2) layout.addWidget(self.label2, 1, 0) layout.addWidget(self.lineEdit2, 1, 1) self.setLayout(layout) if __name__ == "__main__": app = QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()




반응형
'Tech & Development > Programming Languages' 카테고리의 다른 글
Jupyter Notebook 단축키 (0) | 2021.01.29 |
---|---|
Jupyter Notebook 기본 사용법 (0) | 2021.01.29 |
Jupyter Notebook 설치 및 실행 (Windows 10) (0) | 2021.01.29 |
[ PyQt ] QSplitter (0) | 2021.01.29 |
PyQt 설치 및 실행 (0) | 2021.01.29 |
댓글
이 글 공유하기
다른 글
-
Jupyter Notebook 기본 사용법
Jupyter Notebook 기본 사용법
2021.01.291. 새 파일 생성 오른쪽 상단에 [New] 버튼을 클릭하면 Python3, Text File, Folder, Terminal 등의 옵션 중 Python3 을 선택하여 Python3 코드를 입력 할 수 있는 창을 활성화함 [참고] Text File : .txt 파일이나 .py 파일 등을 만듬 (대화 형식으로 실행되지 않고, 터미널에서 실행시켜야함. 읽는 것은 IPython 창에서도 가능) Folder : 디렉토리를 생성할 때 사용 Terminal : Terminal을 하나 새로 활성화함. 윈도우나 맥 등의 명령창(cmd 또는 terminal)과 같음. 여기서 .py 파일을 실행시킬 수 있고, 파일의 목록을 보거나 삭제하는 등의 명령이 모두 가능 (Running 탭에서 중지시킬 수 있음) 생성하면 맨 위에… -
Jupyter Notebook 설치 및 실행 (Windows 10)
Jupyter Notebook 설치 및 실행 (Windows 10)
2021.01.291. Jupyter Notebook 웹 브라우저에서 파이썬 코드를 작성하고 실행해 볼 수 있는 개발도구 웹브라우저상에서 코딩하고 결과물까지 한화면에 볼수있는 편집기 2. Jupyter Notebook 설치 Anacond 설치 시 자동 설치 Anaconda를 사용하지 않는 경우 pip 을 통해 Jupyter 패키지를 설치할 수도 있지만, Anaconda를 설치해서 사용할 것을 권장 pip명령어를 통한 설치 (my_python_env) pip install jupyter 3. Jupyter Notebook 실행 Anaconda가 설치된 경우 Anaconda 메뉴중 Jupyter Notebook을 선택하거나 Anaconda Navigator에서 Jupyter Notebook 메뉴를 선택하면 Jupyter를 실… -
[ PyQt ] QSplitter
[ PyQt ] QSplitter
2021.01.291. QSplitter : 프레임을 분할하여 각 영역의 크기를 조절 할 수 있음 import sys from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QSplitter from PyQt5.QtWidgets import QTextEdit from PyQt5.QtWidgets import QVBoxLayout from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import Qt class Form(QWidget): def __init__(self): QWidget.__init__(self, flags=Qt.Widget) self.text_1 = QTextEdit() self.text_2 = … -
PyQt 설치 및 실행
PyQt 설치 및 실행
2021.01.291. PyQt란? PyQt란, Qt의 레이아웃에 Python의 코드를 연결하여 GUI 프로그램을 만들 수 있게 해주는 프레임워크를 의미합니다. PyQt는 C++의 Cross Platform GUI Framework인 Qt를 영국의 Riverbank Computing에서 Python 모듈로 변환해주는 툴을 만들어주며 시작되었습니다. 현재는 PyQt4버전과 PyQt5버전이 주로 사용되고 있습니다. 2. PyQt의 특징 Python에도 PyGTK, PySide, Tkinter등 다양한 GUI Framework가 존재합니다. 하지만 이런 GUI Framework들은 사용하기도 어렵고, 시각적으로 예쁘지 않다는 단점이 있습니다. PyQt는 이러한 Framework들과 다르게 시각적으로도 괜찮은 디자인을 보여주면서…
댓글을 사용할 수 없습니다.