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

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

继承于 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_())

最新文章

  1. Altium Designer 的entry sheet ,offsheet和port作用(转载)
  2. myeclipse maven 安装
  3. 年终汇报、总结、述职:教你做一场B格满满的技术大会演讲
  4. 【积累】validate验证框架的使用
  5. 【真的是随笔】如何利用htaccess把网站流量引到一个页面上(站点维护页效果)
  6. 读取Excel数据到Table表中
  7. Eclipse定制右键创建文件快捷菜单
  8. Eclipse启动Tomcat时45秒超时的解决方法
  9. 2.精通前端系列技术之seajs模块化使工作更简单(二)
  10. 一个ASP函数库
  11. 使用httpclient抓取时,netstat 发现很多time_wait连接
  12. 提高Delphi的编译速度(bpl和bcp)
  13. vue学习之vue基本功能初探
  14. boostrap日期时间插件datetimepicker使用过程的一些问题总结
  15. 交叉编译 tcpdump
  16. Debian 安装配置(包括kdevelop)
  17. elastic-job 新手指南
  18. sql server 拼接字段
  19. MD5 和的价值体现在哪里,它是用来做什么的?
  20. testng使用DataProvider+Excel实现DDT

热门文章

  1. JS遍历二维数组
  2. 阶段3 1.Mybatis_12.Mybatis注解开发_3 mybatis注解开发保存和更新功能
  3. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_8 Mybatis中的返回值深入-调整实体类属性解决增和改方法的报错
  4. 7.k8s.调度器scheduler 亲和性、污点
  5. &lt;nginx.conf&gt; nginx设置用户权限
  6. C#新特性span 和 Tuple
  7. [Web 前端] 022 js 的基本数据类型及使用
  8. vue router应用及总结
  9. [LeetCode] 95. 不同的二叉搜索树 II
  10. ASP.NET中数据库数据导入Excel并打印(2)