gui学习之二十二——qrubberband学习总结(代码片段)

yinsedeyinse yinsedeyinse     2022-12-17     434

关键词:

今天学习一种全新的输入控件——QRubberBand()控件(橡皮筋选中)

一.描述

QRubberBand()提供了一个矩形或西安来只是选择或边界的效果(就像在桌面上点击鼠标后拖拽拉出来的框一样),一般和鼠标事件一同协作。

该控件是继承自QWidget()控件的。

二.功能作用

1.构造函数

控件的声明要求传递形状——线或矩形

qrb = QRubberBand(QRubberBand.Rectangle,self)  #矩形
qrb = QRubberBand(QRubberBand.Line,self)       #线

声明出来的控件默认是不可见的,一般都是结合鼠标的点击、拖拽和释放来使用的。

2.移动、大小调整

QRubberBand控件有自己的move和resize接口,和父类的API使用方法一样,所以我暂时还不知道为什么会有一个子类的API和父类是一样的,貌似效果也一样。

QRubberBand.move(self, p: QtCore.QPoint)
QRubberBand.move(self, ax: int, ay: int)
QRubberBand.resize(self, w: int, h: int)
QRubberBand.resize(self, s: QtCore.QSize)
QRubberBand.setGeometry(self, r: QtCore.QRect)                        #统一设置
QRubberBand.setGeometry(self, ax: int, ay: int, aw: int, ah: int)

三.案例分析

做一个案例:有30个复选框,用QRubberBand框住后被框住的反选

技术图片

代码放在下面

技术图片
from PyQt5.Qt import *
from PyQt5 import QtGui
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(800,500)
        self.UI_test()


    def UI_test(self):
        for i in range(0,30):
            cb = QCheckBox(self)
            cb.setText(str(i))
            cb.move(i%4*50,i//4*60)         #创建30个复选框并按每行4个排列
        self.rb = QRubberBand(QRubberBand.Rectangle,self)

    def mousePressEvent(self, a0: QtGui.QMouseEvent):
        #展示橡皮筋控件
        #鼠标点击的位置为橡皮筋控件的位置
        self.origin_pos = a0.pos()
        self.rb.setGeometry(QRect(self.origin_pos ,QSize()))
        self.rb.show()
        pass
    def mouseMoveEvent(self, a0: QtGui.QMouseEvent):
        self.rb.resize(a0.x(),a0.y())
        # self.rb.setGeometry(QRect(self.origin_pos,a0.pos()))                #这样只能从左上拖到右下
        self.rb.setGeometry(QRect(self.origin_pos,a0.pos()).normalized())   #这样就好了

    def mouseReleaseEvent(self, a0: QtGui.QMouseEvent):
        #获取橡皮筋控件的尺寸
        #遍历复选框释放在橡皮筋控件内
        rect = self.rb.geometry()
        for child in self.children():
            if rect.contains(child.geometry())and child.inherits(QCheckBox): #遍历出的控件包括RubberBand本身,把它排除掉
                child.toggle()
        self.rb.hide()

if __name__ == __main__:
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
QRubberBand案例

 

轻松学习javascript二十一:dom编程学习之获取元素节点的子节点和属性节点

    我们这里所说的获取元素节点的全部子节点包括元素子节点和文本节点两种。还是拿上一篇博文的代码实例进行分析:<spanstyle="font-size:18px;"><spanstyle="font-size:18px;"><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transiti... 查看详情

gui学习之十九——qfontcombobox学习总结(代码片段)

我们上一章学习了QComboBox的用法,这一章我们来看一下它的一个比较常用的子类:QFontComboBox()。一.描述:  QFontComboBox()是QComboBox()的一个子类,但是它的内容是不能被编辑的,主要是用来选择字体。二.功能作用  1.设置和获... 查看详情

gui学习之十四——qabstractspinbox学习总结(代码片段)

QAbstractSpinBox是一个抽象类,是将所有步长调节器的通用的功能抽象出了一个父类。虽然QAbstractSpinBox是一个抽象类,但是可以直接实例化使用。QAbstractSpinBox包含了一个QLineEdit和两个QPushbutton。数据的更改可以通过点击按钮或使用... 查看详情

深度学习之图像分类(二十六)--convmixer网络详解(代码片段)

深度学习之图像分类(二十六)ConvMixer网络详解目录深度学习之图像分类(二十六)ConvMixer网络详解1.前言2.ASimpleModel:ConvMixer2.1PatchEmbedding2.2ConvMixerLayer2.3ConvMixer网络结构2.4实现代码:3.WeightVisualizations4 查看详情

c1认证学习二十二十一二十二(css背景属性css文本属性)

C1认证学习二十、二十一、二十二(CSS背景属性、CSS文本属性)文章目录C1认证学习二十、二十一、二十二(CSS背景属性、CSS文本属性)二十任务背景任务目标background-colorbackground-imagebackground-sizebackground-repeatbackgrou... 查看详情

c1认证学习二十二十一二十二(css背景属性css文本属性)

C1认证学习二十、二十一、二十二(CSS背景属性、CSS文本属性)文章目录C1认证学习二十、二十一、二十二(CSS背景属性、CSS文本属性)二十任务背景任务目标background-colorbackground-imagebackground-sizebackground-repeatbackgrou... 查看详情

tensorflow深度学习之十二:基础图像处理之二

Tensorflow深度学习之十二:基础图像处理之二from:https://blog.csdn.net/davincil/article/details/76598474 首先放出原始图像:1、图像的翻转importtensorflowastfimportcv2#这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数#请... 查看详情

opencv竟然可以这样学!成神之路终将不远(二十二)

返回目录目录22 直方图-1:查找、绘制和分析22.1目标22.2 理论22.3 寻找直方图22.3.1 OpenCV中的直方图计算 查看详情

gui学习之三——qobject学习总结(代码片段)

鉴于PyQt控件的继承关系,我们先学习PyQt控件的基类——QObject。 一.所有的QT对象的基类我们先看一下PyQt里空间的继承关系,稍微改一下代码,显示出继承关系fromPyQt5.Qtimport*importsysapp=QApplication(sys.argv)classWindow(QWidget):def... 查看详情

react学习案例二十二(代码片段)

React学习案例二十二MyComponent.propTypes=//可以声明prop为指定的JS基本数据类型,默认情况,这些数据是可选的optionalArray:React.PropTypes.array,optionalBool:React.PropTypes.bool,optionalFunc:React.PropTypes.func,optional 查看详情

学习二十二

五周第四次课(3月8日)8.6管道符和作业控制8.7/8.8shell变量8.9环境变量配置文件扩展bashrc和bash_profile的区别http://ask.apelearn.com/question/7719简易审计系统:http://www.68idc.cn/help/server/linux/2014042190951.html关于PROMPT_COMMAND环境变量的含义http: 查看详情

自动传输软件(学习之余,给自己弄得一个学习小结)(代码片段)

学习了一段时间后,总觉得有些地方不能融会贯通,因此给自己定了一个小的学习总结目标,自动传输软件项目要求:需要拥有首页、传输界面、接收界面及尾页,实现自动跳转功能1#include<stdio.h>2#include<stdlib.h>34intmain()... 查看详情

gui学习之四——qwidget控件学习总结(代码片段)

上一章将的QObject是PyQt里所有控件的基类,并不属于可视化的控件。这一章所讲的QWidget,是所有可视化控件的基类。QWidget包含下面几点特性a.控件是用户界面的最小的元素b.每个控件都是矩形的,他们按照Z轴顺序排序(垂直于桌... 查看详情

javascript学习总结(二十二)——javascript屏蔽backspace键

今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<inputtype="text"readonly="readonly"/>时有一个奇怪的问题:如果光标进入只读文本框,然后按下Backspace键,就会跳转到上一个页面,效果就像点击了浏览器的... 查看详情

gui学习之二——pyqt控件初识

一.控件概念控件是一个程序界面上的各个独立的元素, 它具备用户点击、接收用户输入、展示不同内容、存放其他控件等功能。二.控件分类常用的控件按功能可以分为以下几种类按钮  QPushButton——一般按钮  QCo... 查看详情

框架学习系列mybatis第十二篇mapper映射文件之输出映射

...用3:总结&下节预告本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十二篇mapper映射文件之输出映射声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!一:mapper映射文件输出映射(输入类型)1.1:mapper.xm... 查看详情

机器学习100天(二十二):022分类模型评价指标-python实现(代码片段)

机器学习100天!今天讲的是:分类模型评价指标-Python实现!《机器学习100天》完整目录:目录打开spyder,首先,导入标准库。importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.metricsimportaccuracy_scorefromsklearn.metricsimportprecision_scorefromsklear 查看详情

机器学习100天(二十二):022分类模型评价指标-python实现(代码片段)

机器学习100天!今天讲的是:分类模型评价指标-Python实现!《机器学习100天》完整目录:目录打开spyder,首先,导入标准库。importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.metricsimportaccuracy_scorefromsklearn.metricsimportprecision_scorefromsklear 查看详情