[PyQt6] QSizePolicy 설정.

2023. 7. 3. 22:40·Programming
728x90
728x90

PyQt6에서 GUI Window의 크기를 조절할 경우, 자식 widget들의 크기도 windows 크기에 맞춰 변해야함.

이를 기본적으로 PyQt6에서는 QSizePolicy를 통해 설정할 수 있음.


사용가능한 QSizePolicy.Policy

  • QtWidgets.QSizePolicy.Policy.Fixed
    • sizeHint()의 return value인 QtCore.QSize instance로 크기 고정.
    • value : 0
  • QtWidgets.QSizePolicy.Policy.Minimum
    • sizeHint()의 return value인 QtCore.QSize instance가 최소 크기임.
    • 더 작아질 수 없음.
    • value : GrowFlag
  • QtWidgets.QSizePolicy.Policy.Maximum
    • sizeHint()의 return value인 QtCore.QSize instance가 최대 크기임.
    • 더 커질 수 없음.
    • value : ShrinkFlag
  • QtWidgets.QSizePolicy.Policy.Preferred
    • sizeHint()의 return value인 QtCore.QSize instance가 최적 크기이나 크기를 변경할 수 있음.
    • minimumsizeHint()의 return value인 QtCore.QSize instance가 최소크기를 지정함.
    • value : GrowFlag|ShrinkFlag
  • QtWidgets.QSizePolicy.Policy.Expanding
    • sizeHint()의 return value인 QtCore.QSize instance가 최적 크기이나 더 작아질 수 있음.
    • 더 큰 사이즈로 확장될 경우, 해당 공간을 다 사용함.
    • value : GrowFlag|ShrinkFlag|ExpandFlag
  • QtWidgets.QSizePolicy.Policy.MinimumExpanding
    • sizeHint()의 return value인 QtCore.QSize instance가 최소 크기이며 최적 크기.
    • 더 큰 사이즈로 확장될 경우, 해당 공간을 다 사용함.
    • value : GrowFlag|ExpandFlag
  • QtWidgets.QSizePolicy.Policy.Ignored
    • sizeHint()를 무시.
    • value : ShrinkFlag|GrowFlag|IgnoreFlag

Widget에서 현재 policy 확인

QPushButton widget을 예로 든 다음 코드를 참고.

push_btn = QPushButton("test")
print("sizeHint :", push_btn.sizeHint())
print("verticalPolicy :", push_btn.sizePolicy().verticalPolicy())
print("horizontalPolicy :", push_btn.sizePolicy().horizontalPolicy())

Widget에서 QSizePolicy를 지정

다음 코드는 dsBar라는 widget에서 QSizePolicy를 지정하는 예를 보여줌.

import sys

from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import Qt

class dsBar(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        self.setSizePolicy(
                QtWidgets.QSizePolicy.Policy.MinimumExpanding,
                QtWidgets.QSizePolicy.Policy.MinimumExpanding
                )
    def sizeHing(self):
        return QtCore.QSize(40,120)

'Programming' 카테고리의 다른 글

[matplotlib] bar chart 그리기 : error bar 포함  (0) 2023.08.01
[Python] for statement  (0) 2023.07.30
[Python] Regular Expression : re 요약  (0) 2023.07.03
[Python] str : Overloaded Operators  (0) 2023.07.02
[Python] pip 란 (Package Management System)  (0) 2023.06.22
'Programming' 카테고리의 다른 글
  • [matplotlib] bar chart 그리기 : error bar 포함
  • [Python] for statement
  • [Python] Regular Expression : re 요약
  • [Python] str : Overloaded Operators
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (740)
      • Private Life (13)
      • Programming (56)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    numpy
    Optimization
    Probability
    Programming
    인허가제도
    signals_and_systems
    Convolution
    검사
    Python
    math
    Term
    fourier transform
    linear algebra
    Vector
    function
    random
    opencv
    signal_and_system
    SS
    SIGNAL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[PyQt6] QSizePolicy 설정.
상단으로

티스토리툴바