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

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

继承于 QWidget

  1. import sys
  2. from PyQt5.QtWidgets import QApplication, QWidget,QRubberBand,QCheckBox
  3. from PyQt5.QtCore import QRect,QSize
  4.  
  5. class Demo(QWidget):
  6. def __init__(self):
  7. super().__init__()
  8. self.resize(300,300)
  9.  
  10. #rb=QRubberBand(QRubberBand.Rectangle,self) #创建橡皮筋控件
  11. #参数:橡皮筋的轮廓
  12. #QRubberBand.Line=0 线
  13. #QRubberBand.Rectangle=1 矩形
  14.  
  15. #rb.setGeometry(10, 10, 50, 40) #位置和大小
  16.  
  17. #其它
  18. #move(x, y) move(QPoint)
  19. #resize(width, height) resize(QSize)
  20. #setGeometry(QRect rect)
  21. #shape() -> QRubberBand.Shape 形状获取
  22.  
  23. #rb.show() #显示
  24. #一般是不显示的,用鼠标选择时才显示
  25.  
  26. #案例
  27. for i in range(0,30):
  28. cb=QCheckBox(self)
  29. cb.setText(str(i))
  30. cb.move(i%4*50,i//4*30)
  31. #50表示每列的宽度 30表示每行的高度
  32. #i%4 表示第i列 i//4 表示第几行
  33.  
  34. self.rb = QRubberBand(QRubberBand.Rectangle, self) # 创建橡皮筋控件
  35.  
  36. def mousePressEvent(self, event): # 鼠标键按下时调用
  37. #1.尺寸:鼠标的点击位置
  38. #2.展示橡皮筋控件
  39.  
  40. self.weizi=event.pos()
  41. self.rb.setGeometry(QRect(self.weizi,QSize()))
  42. self.rb.show()
  43.  
  44. def mouseMoveEvent(self, event): # 鼠标移动事件
  45. #调整橡皮筋控件的尺寸
  46. self.rb.setGeometry(QRect(self.weizi, event.pos()).normalized())
  47. #normalized() 使鼠标往下往上归一化,如果width<0 交换左右角;如果height<0,就交换顶角和底角
  48. #我不理解的问题:QRect的第二个参数不是应该是矩形的width和height,event.pos()不是鼠标的位置吗,它不是宽和高,我认为应该减去原点才是宽和高啊?请理解的学友给我解释解释
  49.  
  50. pass
  51.  
  52. def mouseReleaseEvent(self, event): # 鼠标键释放时调用
  53. #1.获取橡皮筋控件的尺寸范围
  54. #2.遍历所有的子控件,查看哪些控件在区域范围
  55. rect=self.rb.geometry()
  56. for child in self.children():
  57. if rect.contains(child.geometry()) and child.inherits('QCheckBox'):
  58. #contains rect的范围是否包含参数的范围
  59. #child.inherits('QCheckBox') child继承于QCheckBox
  60. child.toggle()
  61. self.rb.hide()
  62. pass
  63.  
  64. def AA(self,val):
  65. print(val)
  66.  
  67. if __name__ == '__main__':
  68. app = QApplication(sys.argv)
  69. demo = Demo()
  70. demo.show()
  71. 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. 写入mongodb

    https://blog.csdn.net/u013421629/article/details/78885079 https://www.jianshu.com/p/7d14c3ad810f  可视 ...

  2. 【pycharm】Mac版快捷键

    首先是快捷键的设置,Mac中是在菜单栏的Pycharn/Preference/Keymap中 [快速调试] 1.看函数.方法最初在哪里创建的,这个方法很好用,查看内置函数之类的  按住command, ...

  3. Linux_Rsync远程同步备份服务器

    目录 目录 Remote Sync 同步的类型 本地模式 远程模式 RSync列表模式 RSync 服务模式 Setup RSync service How to use the rsync comm ...

  4. 3D聚类

    1 3D聚类和普通的二维聚类实质一样,只不过维数太高了,用三维图来表示了. 下面将官网的改成只生成一个图了 #!/usr/bin/python # -*- coding:utf-8 -*- print ...

  5. 那些堪称神器的 Chrome 插件

    Chrome 的简洁快速以及丰富的插件种类使得它在国内日益盛行,帮助了我们很多 Chrome 用户提升了工作效率,而今天要给大家推荐8款实用甚至堪称神器的 Chrome 插件,希望对提升大家的工作效率 ...

  6. is_selected()检查是否选中该元素

    is_selected()检查是否选中该元素,一般针对单选框,复选框,返回的结果是bool 值, 以百度登录页面为案例,来验证"下次自动登录"是否勾选,默认是勾选的,返回的结 果应 ...

  7. 【Linux开发】Linux磁盘管理

    第八章 Linux磁盘管理 [查看磁盘或者目录的容量 df 和 du] df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的:df常用参数有 –i -h -k ...

  8. mybatis一级缓存和二级缓存的使用

    在mybatis中,有一级缓存和二级缓存的概念: 一级缓存:一级缓存 Mybatis的一级缓存是指SQLSession,一级缓存的作用域是SQLSession, Mabits默认开启一级缓存.在同一个 ...

  9. JSP页面读取数据中的数据内容,出现乱码现象的解决方法

    1.首先要确保JSP页面的编码已修改为“utf-8”的字符编码: 2.然后再在jsp页面上添加代码进行设置: 先用getBytes()方法读出数据,然后再new String()方法设置格式为“utf ...

  10. [BZOJ 3123] [SDOI 2013]森林(可持久化线段树+并查集+启发式合并)

    [BZOJ 3123] [SDOI 2013]森林(可持久化线段树+启发式合并) 题面 给出一个n个节点m条边的森林,每个节点都有一个权值.有两种操作: Q x y k查询点x到点y路径上所有的权值中 ...