提供一个矩形或线来指示选择或边界

一般结合鼠标事件一同协作

继承于 QWidget

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QRubberBand,QCheckBox
from PyQt5.QtCore import QRect,QSize class Demo(QWidget):
def __init__(self):
super().__init__()
self.resize(300,300) #rb=QRubberBand(QRubberBand.Rectangle,self) #创建橡皮筋控件
#参数:橡皮筋的轮廓
#QRubberBand.Line=0 线
#QRubberBand.Rectangle=1 矩形 #rb.setGeometry(10, 10, 50, 40) #位置和大小 #其它
#move(x, y) move(QPoint)
#resize(width, height) resize(QSize)
#setGeometry(QRect rect)
#shape() -> QRubberBand.Shape 形状获取 #rb.show() #显示
#一般是不显示的,用鼠标选择时才显示 #案例
for i in range(0,30):
cb=QCheckBox(self)
cb.setText(str(i))
cb.move(i%4*50,i//4*30)
#50表示每列的宽度 30表示每行的高度
#i%4 表示第i列 i//4 表示第几行 self.rb = QRubberBand(QRubberBand.Rectangle, self) # 创建橡皮筋控件 def mousePressEvent(self, event): # 鼠标键按下时调用
#1.尺寸:鼠标的点击位置
#2.展示橡皮筋控件 self.weizi=event.pos()
self.rb.setGeometry(QRect(self.weizi,QSize()))
self.rb.show() def mouseMoveEvent(self, event): # 鼠标移动事件
#调整橡皮筋控件的尺寸
self.rb.setGeometry(QRect(self.weizi, event.pos()).normalized())
#normalized() 使鼠标往下往上归一化,如果width<0 交换左右角;如果height<0,就交换顶角和底角
#我不理解的问题:QRect的第二个参数不是应该是矩形的width和height,event.pos()不是鼠标的位置吗,它不是宽和高,我认为应该减去原点才是宽和高啊?请理解的学友给我解释解释 pass def mouseReleaseEvent(self, event): # 鼠标键释放时调用
#1.获取橡皮筋控件的尺寸范围
#2.遍历所有的子控件,查看哪些控件在区域范围
rect=self.rb.geometry()
for child in self.children():
if rect.contains(child.geometry()) and child.inherits('QCheckBox'):
#contains rect的范围是否包含参数的范围
#child.inherits('QCheckBox') child继承于QCheckBox
child.toggle()
self.rb.hide()
pass def AA(self,val):
print(val) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

pyqt5-橡皮筋控件QRubberBand的更多相关文章

  1. PyQt5——基本控件

    PyQt5基本控件使用方法详见:https://blog.csdn.net/jia666666/article/list/5?t=1& PyQt5基本控件汇总: 1.QMainWindow 2 ...

  2. [ PyQt入门教程 ] PyQt5基本控件使用:单选按钮、复选框、下拉框

    本文主要介绍PyQt5界面最基本使用的单选按钮.复选框.下拉框三种控件的使用方法进行介绍. 1.RadioButton单选按钮/CheckBox复选框.需要知道如何判断单选按钮是否被选中. 2.Com ...

  3. [ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件对话框

    本文主要介绍PyQt界面实现中常用的消息弹出对话框.提供用户输入的输入框.打开文件获取文件/目录路径的文件对话框.学习这三种控件前,先想一下它们使用的主要场景: 1.消息弹出对话框.程序遇到问题需要退 ...

  4. PyQt5复杂控件(树控件、选项卡控件(滚动条控件、多文档控件、停靠控件)

    1.树控件的基本使用方法QTreeWidget'''QTreeWidget树控件的使用方法添加图标,添加表格,添加复选框等'''from PyQt5.QtWidgets import *from Py ...

  5. PyQt5日历控件及相关操作

    1.日历控件QCalendarWidget控件import sys,mathfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQ ...

  6. PyQt5基础控件

    QLabel标签 功能:在界面上显示文字.图片.链接等 接口: 方法 描述 setText() 设置显示的内容 setAlignment() 设置文字对齐方式 setToolTip() 设置提示信息 ...

  7. pyqt5为控件设置提示信息

    # 显示控件提示消息 import sys from PyQt5.QtWidgets import QHBoxLayout,QMainWindow,QApplication,QToolTip,QPus ...

  8. PyQt5——隐藏控件并保留位置

    原文地址:https://blog.csdn.net/qq_38161040/article/details/86605798 ———————————————————————————————— 设置控 ...

  9. PyQt5常用控件及方法(代码段)

    文章目录PyQt5程序基本格式QMainWindow主窗口QLabel标签QTextBrowser文本浏览器QTextEdit文本编辑器QPushButton按键QCheckBox复选框QRadioB ...

随机推荐

  1. VS2010远程调试C#程序

    场景: 客户的计算机运行程序出现异常,由于办公场所不在一起,无法直接在客户的机器上调试.此时希望可以直接在开发人员的计算机(本地机器)上远程调试客户机上的软件. 假设: 本地机器的系统账户为 GIS, ...

  2. shell脚本批量开启防火墙端口

    # 注意:shell脚本批量执行命令,不能只写一个函数,然后把所有命令复制进去,之前试过这样是不行的.必须要有一个判断命令执行成功与否的语句 # 简单的命令可以不加结果判断符号,但是遇到解压包.sed ...

  3. linux使用ltrace和strace跟踪程序执行过程

    yum install strace yum install ltrace 1.strace  ping -c 1 www.baidu.com 2.ltrace  ping -c 1 www.baid ...

  4. 阿里云 Centos7 部署 Django 项目

    前期准备 阿里云服务器 mysql数据库 已经本地运行成功的项目 阿里云服务器的环境配置 Git #代码管理 Gitlab #代码托管,要求服务器内存不低于2G,我选择放弃 Mysql #连接数据库 ...

  5. jmap -heap命令用法

    用jmap -heap命令可以查看linux堆内存分布 具体用法 1:先查出tomcat的进程号 例如: 然后执行 jmap -heap 7095 可以打印出整体的堆信息   可以看到经过分配的存活区 ...

  6. 【ABAP系列】SAP ABAP BDC_OKCODE 解释

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP BDC_OKC ...

  7. 【MM系列】SAP MM模块-MIGO收货后自动打印收货单

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-MIGO收货后自动 ...

  8. 14.使用Crunch创建字典----Armitage扫描和利用----设置虚拟渗透测试实验室----proxychains最大匿名

    使用Crunch创建字典 kali自带的字典 usr/share/wordlists cd Desktop mkdir wordlists cd wordlists/ crunch --help cr ...

  9. maven spark Scala idea搭建maven项目的 pom.xml文件配置

    1.pom.xml文件配置,直接上代码. <?xml version="1.0" encoding="UTF-8"?> <project xm ...

  10. 使用docker compose 构建多个镜像

    定义docker compose version: ' services: composedb: image: mysql/mysql-server container_name: composedb ...