백엔드 개발 파이썬 튜토리얼 PyQt5에서 매일 배워야 하는 레이아웃 관리

PyQt5에서 매일 배워야 하는 레이아웃 관리

Apr 19, 2018 pm 01:50 PM
pyqt5 공들여 나열한 것 관리하다

이 글에서는 PyQt5에서 매일 배워야 할 레이아웃 관리 관련 정보를 중심으로 자세히 소개하고 있습니다. 참고할만한 가치가 있으니 관심 있는 친구들이 참고하면 됩니다.

GUI 프로그래밍에서 빼놓을 수 없는 부분이 있는데, 레이아웃 관리입니다. 레이아웃 관리는 애플리케이션 창에 컨트롤이 배치되는 방식을 제어합니다. 레이아웃 관리는 두 가지 방법으로 수행할 수 있습니다. 절대 위치 지정 또는 레이아웃 클래스 메서드를 사용하여 프로그램 창에서 컨트롤의 위치를 ​​제어할 수 있습니다.

절대 위치 지정

각 컨트롤은 프로그래머가 지정한 위치에 따라 배치됩니다. 절대 위치 지정을 사용할 때 다음 제한 사항을 알고 싶습니다.

  • 창 크기를 조정해도 컨트롤의 크기와 위치는 동일하게 유지됩니다.

  • 애플리케이션이 플랫폼에 따라 다르게 보일 수 있습니다

  • 글꼴 변경으로 인해 애플리케이션의 레이아웃이 손상될 수 있습니다

  • 레이아웃을 변경하기로 결정한 경우 각 컨트롤을 완전히 수정해야 하므로 지루하고 시간이 많이 걸립니다

다음 예는 절대 좌표 위치 지정 방법입니다. 통제의.

#!/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_())
로그인 후 복사

이 예에서는 라벨이 사용되었습니다. x 및 y 좌표 값을 제공하여 위치를 지정합니다. 좌표계의 원점은 컨트롤의 왼쪽 상단입니다. x 값은 왼쪽에서 오른쪽으로 증가합니다. y 값은 위에서 아래로 증가합니다.

lbl1 = QLabel('我的世界你曾经来过', self)
lbl1.move(15, 10)
로그인 후 복사

레이블 컨트롤은 x=15 및 y=10에 배치됩니다.

프로그램 실행 후

PyQt5에서 매일 배워야 하는 레이아웃 관리

Box 레이아웃 상자 레이아웃

레이아웃 관리는 레이아웃 클래스를 사용하여 보다 유연하고 실용적입니다. 이는 창에 컨트롤을 배치하는 데 선호되는 방법입니다. QHBoxLayout 및 QVBoxLayout은 각각 가로 및 세로로 정렬된 컨트롤의 기본 레이아웃 클래스입니다.

프로그램 오른쪽 하단에 두 개의 버튼을 넣는다고 상상해 보세요. 이러한 레이아웃을 생성하려면 가로 하나와 세로 하나, 두 개의 상자를 사용할 수 있습니다. 필요한 여유 공간을 만들기 위해 스트레치 팩터를 추가하겠습니다.


#!/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)
로그인 후 복사

가로 상자 레이아웃을 만들고, 늘이기 요소를 늘리고(addStretch), 두 개의 버튼을 추가했습니다(addWidget). 두 개의 버튼을 추가하기 전에 스트레치 요소를 추가하여 두 개의 버튼을 창 오른쪽으로 밀어냅니다.

vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
로그인 후 복사

원하는 레이아웃을 얻으려면 가로 레이아웃을 세로 레이아웃에도 넣어야 합니다. 수직 상자의 확장 요소는 내부 컨트롤을 포함하여 수평 상자를 창 아래쪽으로 밀어냅니다.

self.setLayout(vbox)
로그인 후 복사

마지막으로 창의 기본 레이아웃을 설정합니다.

프로그램 실행 후

PyQt5에서 매일 배워야 하는 레이아웃 관리

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)
로그인 후 복사

버튼을 생성하고 레이아웃에 (addWidget)을 추가하세요.

프로그램이 실행된 후

PyQt5에서 매일 배워야 하는 레이아웃 관리

그리드 레이아웃 확장

창의 컨트롤은 그리드의 여러 열이나 행에 걸쳐 있을 수 있습니다. 다음 예에서는 이를 설명합니다.


#!/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개 행에 걸쳐 있어야 합니다.

프로그램 실행 후

PyQt5에서 매일 배워야 하는 레이아웃 관리

PyQt5 튜토리얼의 이 부분은 레이아웃 관리에 전념합니다. PyQt5의 이벤트 관련 내용은 추후 소개하겠습니다.

관련 추천:

PyQt5는 라벨이 있는 체크박스를 매일 배워야 합니다

PyQt5는 창 중심 효과를 만드는 방법을 매일 배워야 합니다

PyQt5는 창을 닫는 방법을 매일 배워야 합니다

위 내용은 PyQt5에서 매일 배워야 하는 레이아웃 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Redis를 사용하여 분산 트랜잭션 관리를 구현하는 방법 Redis를 사용하여 분산 트랜잭션 관리를 구현하는 방법 Nov 07, 2023 pm 12:07 PM

Redis를 사용하여 분산 트랜잭션 관리를 구현하는 방법 소개: 인터넷의 급속한 발전으로 인해 분산 시스템의 사용이 점점 더 널리 보급되고 있습니다. 분산 시스템에서 트랜잭션 관리는 중요한 과제입니다. 기존의 트랜잭션 관리 방법은 분산 시스템에서 구현하기 어렵고 비효율적입니다. Redis의 특성을 활용하여 분산 트랜잭션 관리를 쉽게 구현하고 시스템의 성능과 안정성을 향상시킬 수 있습니다. 1. Redis 소개 Redis는 효율적인 읽기 및 쓰기 성능과 풍부한 데이터를 갖춘 메모리 기반 데이터 저장 시스템입니다.

pyqt5를 설치하는 방법 pyqt5를 설치하는 방법 Nov 30, 2023 pm 02:05 PM

pyqt5 설치 단계: 1. Python과 pip가 컴퓨터에 설치되어 있는지 확인합니다. 2. 터미널이나 명령 프롬프트에 "pip install PyQt5" 명령을 입력하여 PyQt5를 설치합니다. 4. "pip install PyQt5.QtGui" 명령을 입력하여 일부 특정 기능이나 구성 요소를 설치할 수 있습니다. 5. 문제가 발생하면 pip 및 setuptools를 업그레이드해 보세요.

Java로 학생 성과 관리 기능을 구현하는 방법은 무엇입니까? Java로 학생 성과 관리 기능을 구현하는 방법은 무엇입니까? Nov 04, 2023 pm 12:00 PM

Java로 학생 성과 관리 기능을 구현하는 방법은 무엇입니까? 현대 교육 시스템에서 학생의 성과 관리는 매우 중요한 업무입니다. 학생 성과를 관리함으로써 학교는 학생의 학습 진행 상황을 더 잘 모니터링하고, 학생의 약점과 장점을 이해하며, 이 정보를 기반으로 보다 구체적인 교육 계획을 세울 수 있습니다. 이 기사에서는 Java 프로그래밍 언어를 사용하여 학생 성과 관리 기능을 구현하는 방법에 대해 설명합니다. 먼저, 학생 성적의 데이터 구조를 결정해야 합니다. 일반적으로 학생의 성적은 다음과 같이 나타낼 수 있습니다.

Windows 10에서 마우스 오른쪽 버튼 클릭 메뉴 관리를 열 수 없는 경우 해결 방법 Windows 10에서 마우스 오른쪽 버튼 클릭 메뉴 관리를 열 수 없는 경우 해결 방법 Jan 04, 2024 pm 07:07 PM

win10 시스템을 사용할 때 마우스를 사용하여 바탕화면을 마우스 오른쪽 버튼으로 클릭하거나 메뉴를 마우스 오른쪽 버튼으로 클릭하면 메뉴가 열리지 않고 컴퓨터를 정상적으로 사용할 수 없는 것을 발견했습니다. 이때 복원이 필요합니다. 문제를 해결하기 위한 시스템. Win10 마우스 오른쪽 버튼 클릭 메뉴 관리를 열 수 없습니다. 1. 먼저 제어판을 열고 클릭합니다. 2. 그런 다음 보안 및 유지 관리 아래를 클릭합니다. 3. 시스템을 복원하려면 오른쪽의 를 클릭하세요. 4. 그래도 사용할 수 없다면 마우스 자체에 문제가 있는지 확인해 보세요. 5. 마우스에 문제가 없다고 확신하면 +를 누르고 Enter를 누르세요. 6. 실행이 완료되면 컴퓨터를 다시 시작합니다.

WordPress 웹 페이지 정렬 문제 해결 가이드 WordPress 웹 페이지 정렬 문제 해결 가이드 Mar 05, 2024 pm 01:12 PM

잘못 정렬된 WordPress 웹 페이지 해결 가이드 WordPress 웹 사이트 개발 시 때로는 웹 페이지 요소가 잘못 정렬되는 경우가 있습니다. 이는 다양한 장치의 화면 크기, 브라우저 호환성 또는 부적절한 CSS 스타일 설정 때문일 수 있습니다. 이러한 잘못된 정렬을 해결하려면 문제를 주의 깊게 분석하고, 가능한 원인을 찾아 단계별로 디버그하고 복구해야 합니다. 이 문서에서는 몇 가지 일반적인 WordPress 웹 페이지 정렬 문제와 해당 솔루션을 공유하고 개발에 도움이 되는 특정 코드 예제를 제공합니다.

HTML과 CSS를 사용하여 반응형 캐러셀 레이아웃을 만드는 방법 HTML과 CSS를 사용하여 반응형 캐러셀 레이아웃을 만드는 방법 Oct 20, 2023 pm 04:24 PM

HTML 및 CSS를 사용하여 반응형 회전판 레이아웃을 만드는 방법 회전판은 현대 웹 디자인의 일반적인 요소입니다. 사용자의 관심을 끌고, 여러 콘텐츠나 이미지를 표시하고, 자동으로 전환할 수 있습니다. 이 글에서는 HTML과 CSS를 사용하여 반응형 캐러셀 레이아웃을 만드는 방법을 소개합니다. 먼저 기본 HTML 구조를 만들고 필요한 CSS 스타일을 추가해야 합니다. 다음은 간단한 HTML 구조입니다: <!DOCTYPEhtml&g

H5의 위치 속성의 유연한 적용 기술 H5의 위치 속성의 유연한 적용 기술 Dec 27, 2023 pm 01:05 PM

H5에서 위치 속성을 유연하게 사용하는 방법 H5 개발에서는 요소의 위치 지정 및 레이아웃이 관련되는 경우가 많습니다. 이때 CSS 위치 속성이 작동하게 됩니다. 위치 속성은 상대 위치 지정, 절대 위치 지정, 고정 위치 지정 및 고정 위치 지정을 포함하여 페이지에서 요소의 위치 지정을 제어할 수 있습니다. 이번 글에서는 H5 개발에서 position 속성을 유연하게 활용하는 방법을 자세히 소개하겠습니다.

Windows 11에 키보드 레이아웃이 계속 추가됨: 테스트를 거친 4가지 솔루션 Windows 11에 키보드 레이아웃이 계속 추가됨: 테스트를 거친 4가지 솔루션 Dec 14, 2023 pm 05:49 PM

일부 사용자의 경우 Windows 11에서는 변경 사항을 수락하거나 확인하지 않더라도 새 키보드 레이아웃을 계속 추가합니다. WindowsReport 소프트웨어 팀은 이 문제를 재현했으며 Windows 11이 PC에 새 키보드 레이아웃을 추가하는 것을 방지하는 방법을 알고 있습니다. Windows 11에 자체 키보드 레이아웃이 추가된 이유는 무엇입니까? 이는 일반적으로 모국어가 아닌 언어와 키보드 조합을 사용할 때 발생합니다. 예를 들어 미국 표시 언어와 프랑스어 키보드 레이아웃을 사용하는 경우 Windows 11에 영어 키보드도 추가될 수 있습니다. Windows 11에 원하지 않는 새로운 키보드 레이아웃이 추가된 경우 어떻게 해야 할까요? Windows 11에서 키보드 레이아웃을 추가하지 못하게 하려면 어떻게 해야 합니까? 1. 불필요한 키보드 레이아웃을 삭제하고 '열기'를 클릭하세요.

See all articles