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 |