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