def set_icon_size(self, size: int | types.SizeType): if isinstance(size, tuple): size = QtCore.QSize(*size) elif isinstance(size, int): size = QtCore.QSize(size, size) self._size = size self.update()
def minimumSize(self) -> QtCore.QSize: size = QtCore.QSize() for item in self.items: size = size.expandedTo(item.minimumSize()) margin_width = 2 * self.contentsMargins().top() size += QtCore.QSize(margin_width, margin_width) return size
def set_size_hint(self, hint: types.SizeType, column: int = 0): if isinstance(hint, tuple): hint = QtCore.QSize(*hint) self.setSizeHint(column, hint)
def expanded_to(self, size: types.SizeType) -> Size: if isinstance(size, tuple): size = QtCore.QSize(*size) return Size(self.expandedTo(size))
def __repr__(self): return f"{type(self).__name__}({self.width()}, {self.height()})" def __getitem__(self, index) -> int: return (self.width(), self.height())[index] def __reduce__(self): return type(self), (self.width(), self.height()) def expanded_to(self, size: types.SizeType) -> Size: if isinstance(size, tuple): size = QtCore.QSize(*size) return Size(self.expandedTo(size)) def shrunk_by(self, margins: types.MarginsType) -> Size: if isinstance(margins, tuple): margins = QtCore.QMargins(*margins) return Size(self.marginsAdded(margins)) def grown_by(self, margins: types.MarginsType) -> Size: if isinstance(margins, tuple): margins = QtCore.QMargins(*margins) return Size(self.marginsRemoved(margins)) if __name__ == "__main__": size = Size(10, 20) print(tuple(size)) size = size.expanded_to(QtCore.QSize(100, 100)) print(type(size))