QRubberBand是PyQt5中用于实现橡皮筋控件的类,它可以用于选择屏幕区域、拖拽等操作。
下面是一些常用的QRubberBand方法:
- setGeometry(const QRect & rect):设置橡皮筋的几何形状,即位置和大小
- setStyle(QStyle * style):设置橡皮筋的样式
- setVisible(bool visible):设置橡皮筋的可见性
- move(QPoint p):将橡皮筋移动到指定位置
- resize(QSize size):调整橡皮筋的大小
以下是一个简单的例子,演示如何使用QRubberBand创建一个选择屏幕区域的工具:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRubberBand
from PyQt5.QtGui import QPixmap, QPainter
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.rubber_band = QRubberBand(QRubberBand.Rectangle, self)
def paintEvent(self, event):
painter = QPainter(self)
pixmap = QPixmap.grabWindow(QApplication.desktop().winId())
painter.drawPixmap(self.rect(), pixmap)
def mousePressEvent(self, event):
self.origin = event.pos()
self.rubber_band.setGeometry(QRect(self.origin, QSize()))
self.rubber_band.show()
def mouseMoveEvent(self, event):
if self.rubber_band.isVisible():
self.rubber_band.setGeometry(QRect(self.origin, event.pos()).normalized())
def mouseReleaseEvent(self, event):
if self.rubber_band.isVisible():
self.rubber_band.hide()
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.showFullScreen()
sys.exit(app.exec_())
在上面的例子中,我们创建了一个QRubberBand实例,并在MainWindow的paintEvent中绘制了当前屏幕的截图。当用户按下鼠标左键时,我们记录下鼠标的位置,并在橡皮筋中显示一个矩形框。当用户移动鼠标时,我们调整矩形框的大小,直到用户释放鼠标左键时,我们隐藏矩形框,并使用Qt的截图功能获取用户选择的区域。