PyQt 5 매일 배 워 야 할 레이아웃 관리
절대 위치
모든 컨트롤 은 프로그래머 가 지정 한 위치 에 따라 배치 합 니 다.절대적 인 포 지 셔 닝 을 사용 할 때 저 희 는 다음 과 같은 제한 을 알 아야 합 니 다.
창 크기 조절 컨트롤 의 크기 와 위치 가 변 하지 않 습 니 다4.567917.서로 다른 플랫폼 에서 응용 프로그램 이 다 를 수 있 습 니 다.4.567918.
아래 의 예 는 컨트롤 의 절대 좌표 포 지 셔 닝 방식 이다.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5
。
:
:http://blog.csdn.net/weiaitaowang
:2016 7 31
"""
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
lbl1 = QLabel(' ', self)
lbl1.move(15, 10)
lbl2 = QLabel('CSND ', self)
lbl2.move(35, 40)
lbl3 = QLabel(' ', self)
lbl3.move(55, 70)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle(' ')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
우리 의 예 에서 사용 하 는 것 은 모두 라벨(Label)입 니 다.우 리 는 x 와 y 좌표 값 을 제공 하여 그것들 을 포 지 셔 닝 합 니 다.좌표계 의 원점 은 컨트롤 의 왼쪽 상단 이다.x 치가 증가 하 는 것 은 왼쪽 에서 오른쪽으로 이다.y 값 의 증 가 는 위 에서 아래로 이다.
lbl1 = QLabel(' ', self)
lbl1.move(15, 10)
탭 컨트롤 이 x=15 와 y=10 에 놓 여 있 습 니 다.프로그램 실행 후
상자 레이아웃 상자 레이아웃
레이아웃 관 리 는 레이아웃 류 를 사용 하 는 방식 이 더욱 유연 하고 실 용적 입 니 다.창 에 컨트롤 을 두 는 가장 좋 은 방법 입 니 다.QHBoxLayout 와 QVBoxLayout 는 각각 수평 과 수직 정렬 컨트롤 의 기본 레이아웃 클래스 입 니 다.
생각해 보 세 요.우 리 는 두 개의 단 추 를 프로그램의 오른쪽 아래 에 있 기 를 바 랍 니 다.이 레이아웃 을 만 들 려 면 가로 와 세로 두 상 자 를 사용 할 수 있 습 니 다.필요 한 공간 을 만 들 려 면 스 트 레 칭 인자(stretch factor)를 추가 합 니 다.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5
, 。
:
:http://blog.csdn.net/weiaitaowang
:2016 7 31
"""
import sys
from PyQt5.QtWidgets import (QApplication, QWidget,
QPushButton, QVBoxLayout, QHBoxLayout)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
okButton = QPushButton(' ')
cancelButton = QPushButton(' ')
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.setLayout(vbox)
self.setGeometry(300, 300, 350, 150)
self.setWindowTitle('Box ')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
이 예제 에 서 는 두 단 추 를 창의 오른쪽 아래 에 놓 습 니 다.우리 가 프로그램 창 을 조정 할 때,그들 은 오른쪽 아래 에 고정 되 어 있다.우 리 는 HBOxLayout 와 QVBoxLayout 레이아웃 을 동시에 사용 합 니 다.
okButton = QPushButton(' ')
cancelButton = QPushButton(' ')
여기 서 우 리 는 두 개의 단 추 를 만 들 었 다.
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)
수평 box 레이아웃 을 만 들 었 습 니 다.스 트 레 칭 인자(addStretch)를 추가 하고(addWidget)두 단 추 를 추가 합 니 다.두 단 추 를 추가 하기 전에 스 트 레 칭 인 자 를 추가 하면 두 단 추 를 창 오른쪽 으로 밀어 줍 니 다.
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
우리 가 원 하 는 레이아웃 을 얻 으 려 면 수직 레이아웃 에 가로 레이아웃 을 넣 어야 합 니 다.수직 상자 의 스 트 레 칭 인 자 는 수평 상자 에 포 함 된 컨트롤 을 창 아래쪽 으로 밀어 줍 니 다.
self.setLayout(vbox)
마지막 으로 창의 주 레이아웃 을 설정 합 니 다.프로그램 실행 후
QGridLayout 격자 레이아웃
가장 자주 사용 하 는 레이아웃 클래스 는 격자 레이아웃 입 니 다.이 레이아웃 은 이 공간 을 줄 과 열 로 나 누 었 다.격자 레이아웃 을 만 들 려 면 QGridLayout 클래스 를 사용 합 니 다.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5
, 。
:
:http://blog.csdn.net/weiaitaowang
:2016 7 31
"""
import sys
from PyQt5.QtWidgets import (QApplication, QWidget,
QPushButton, QGridLayout)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
grid = QGridLayout()
self.setLayout(grid)
names = ['Cls', 'Bck', '', 'Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+',]
positions = [(i, j) for i in range(5) for j in range(4)]
for position, name in zip(positions, names):
if name == '':
continue
button = QPushButton(name)
grid.addWidget(button, *position)
self.move(300, 150)
self.setWindowTitle(' ')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
우리 의 예 에서,우 리 는 만 든 단추 컨트롤 을 격자 에 놓 을 것 입 니 다.
grid = QGridLayout()
self.setLayout(grid)
QGridLayout 를 실례 화하 고 프로그램 창의 레이아웃 을 설정 합 니 다.
names = ['Cls', 'Bck', '', 'Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+',]
이것 은 앞으로 사용 할 단추 라벨 입 니 다.
positions = [(i, j) for i in range(5) for j in range(4)]
x.우 리 는 격자 위치 목록 을 만 들 었 습 니 다.
for position, name in zip(positions, names):
if name == '':
continue
button = QPushButton(name)
grid.addWidget(button, *position)
단 추 를 만 들 고 레이아웃 에 추가 합 니 다.프로그램 실행 후
확장 격자 레이아웃
창의 컨트롤 은 격자 에 있 는 여러 열 이나 줄 을 뛰 어 넘 을 수 있 습 니 다.아래 의 예 에서 우 리 는 이 점 을 설명 한다.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5
, GridLayout 。
:
:http://blog.csdn.net/weiaitaowang
:2016 7 31
"""
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel,
QTextEdit, QLineEdit, QGridLayout)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
title = QLabel(' ')
author = QLabel(' ')
review = QLabel(' ')
titleEdit = QLineEdit()
authorEdit = QLineEdit()
reviewEdit = QTextEdit()
grid =QGridLayout()
grid.setSpacing(10)
grid.addWidget(title, 1, 0)
grid.addWidget(titleEdit, 1, 1)
grid.addWidget(author, 2, 0)
grid.addWidget(authorEdit, 2, 1)
grid.addWidget(review, 3, 0)
grid.addWidget(reviewEdit, 3, 1, 5, 1)
self.setLayout(grid)
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle(' ')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
우리 가 만 든 프로그램 에는 세 개의 탭,두 개의 단일 텍스트 입력 상자 와 하나의 텍스트 편집 컨트롤 이 포함 되 어 있 으 며,QGridLayout 레이아웃 을 사용 합 니 다.
grid =QGridLayout()
grid.setSpacing(10)
격자 레이아웃 을 예화 하고 설정 간격 을 설정 합 니 다.
grid.addWidget(reviewEdit, 3, 1, 5, 1)
격자 레이아웃 에 컨트롤 을 추가 하면 이 컨트롤 에 줄 간격 이나 열 간격 을 사용 할 수 있 습 니 다.우리 의 예 에서,우 리 는 reviewEdit 컨트롤 의 범위 5 줄 을 요구 합 니 다.프로그램 실행 후
PyQt 5 튜 토리 얼 의 이 부분 에서 레이아웃 관 리 를 전문 적 으로 소개 했다.다음은 PyQt 5 사건 관련 내용 을 소개 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt Designer와 PyQt5로 GUI인 MQTT 구독자를 만들 때의 메모직장의 건물이 신축되었으므로, 각 층의 분전반에 전력계를 설치해, 1곳에서 모니터링할 수 있는 시스템을 구축하려고 생각했다. 전력계는 을 참고로 제작했다. 시스템의 전체도 Windows10상에, 선인의 지혜를 참고로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.