万一其他人在谷歌之外徘徊并打算将其与 PyQt 一起使用,这里是 @pavel-strakhov 的 C++ 示例的等效 Python 代码,我可以确认它在系统提供的 *buntu Linux 14.04 LTS 上适用于我Python 3.4 和 PyQt 5.2.1。
(需要注意的是,我选择的小部件主题不知道如何旋转QSizeGrip
左上角的,所以两个角都有相同的手柄。)
来源:
class ResizableRubberBand(QWidget):
"""Wrapper to make QRubberBand mouse-resizable using QSizeGrip
Source: http://stackoverflow.com/a/19067132/435253
"""
def __init__(self, parent=None):
super(ResizableRubberBand, self).__init__(parent)
self.setWindowFlags(Qt.SubWindow)
self.layout = QHBoxLayout(self)
self.layout.setContentsMargins(0, 0, 0, 0)
self.grip1 = QSizeGrip(self)
self.grip2 = QSizeGrip(self)
self.layout.addWidget(self.grip1, 0, Qt.AlignLeft | Qt.AlignTop)
self.layout.addWidget(self.grip2, 0, Qt.AlignRight | Qt.AlignBottom)
self.rubberband = QRubberBand(QRubberBand.Rectangle, self)
self.rubberband.move(0, 0)
self.rubberband.show()
self.show()
def resizeEvent(self, event):
self.rubberband.resize(self.size())
用法:
self.band = ResizableRubberBand(ui.label)
self.band.move(100, 100)
self.band.resize(50, 50)
self.band.setMinimumSize(30, 30)