其他分享
首页 > 其他分享> > 7.11 QRubberBand橡皮筋控件

7.11 QRubberBand橡皮筋控件

作者:互联网

一、QRubberBand橡皮筋控件

1.基本概念

2.代码

点击查看代码
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("QRubberBand橡皮筋控件 - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        # Line = 0  线形
        # Rectangle = 1 矩形
        ##创建步骤(以下三条命令)
        # rb = QRubberBand(QRubberBand.Rectangle,self)
        # rb.setGeometry(QRect(30,30,30,30))  # 区域选择
        # rb.show()

        ##案例:
        #1创建按钮
        for i in range(0, 120) :
            ck = QCheckBox(self)
            ck.setText(str(i))
            ck.move(i % 10 * 60, i // 10 * 40)
        #2创建橡皮筋控件
        self.rb = QRubberBand(QRubberBand.Rectangle, self)

    #3创建事件:找到鼠标点击的点
    def mousePressEvent(self, QMouseEvent) :
        # 创建一个橡皮筋控件
        # self.rb = QRubberBand(QRubberBand.Rectangle, self)  # 这行放到上面,避免同时出现多个选择区域,否则每次按下都会创建一个控件
        # 设置尺寸
        self.old_point = QMouseEvent.pos()
        self.rb.setGeometry(QRect(self.old_point, QSize()))
        # 展示控件
        self.rb.show()
    #4鼠标移动区域控件:找到区域
    def mouseMoveEvent(self, QMouseEvent) :
        # 计算出选择的区域尺寸
        self.rb.setGeometry(QRect(self.old_point, QMouseEvent.pos()).normalized())  # 6normalized()用来解决反向拖拽选择
    #5鼠标松开事件:
    def mouseReleaseEvent(self, QMouseEvent) :
        # 获取橡皮筋控件选择范围
        wh = self.rb.geometry() #获取范围
        # 遍历控件
        for child in self.children() :  #找到所有的子控件
            if wh.contains(child.geometry()) and child.inherits('QCheckBox') : #包含该子控件,并且子控件是QCheckBox
                child.toggle() #切换现有的状态
        self.rb.hide() #把橡皮筋控件隐藏掉


if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())

3.效果

标签:__,控件,7.11,self,橡皮筋,rb,QRubberBand
来源: https://www.cnblogs.com/yuyingblogs/p/16134513.html