zoukankan      html  css  js  c++  java
  • PyQt5Day23--输入控件QRubberBand橡皮筋选择控件

    一、QRubberBand

      提供一个矩形或线来指示选择或边界,一般结合鼠标事件一同协作。

    综合案例操作:

      在一个空白窗口内,展示多个复选框控件,通过橡皮筋实现批量选中与取消选中效果。

     1 # *******************QRubberBand**********************开始
     2 from PyQt5.Qt import *
     3 
     4 class Window(QWidget):
     5     def __init__(self):
     6         super().__init__()
     7         self.setWindowTitle("QRubberBand")
     8         self.resize(500, 500)
     9         self.setup_ui()
    10 
    11     def setup_ui(self):
    12         # 1.添加子控件,复选框
    13         for i in range(0,30):
    14             cb = QCheckBox(self)
    15             cb.setText("{}".format(i))
    16             cb.move(i%4*50,i//4*60)
    17 
    18         # 1.创建一个橡皮筋选中控件
    19         self.rb = QRubberBand(QRubberBand.Rectangle, self)
    20 
    21     def mousePressEvent(self, evt):
    22         # 2.尺寸大小:鼠标点击的位置点
    23         self.origin_pos = evt.pos()
    24         self.rb.setGeometry(QRect(self.origin_pos, QSize()))
    25         # 3.展示橡皮筋控件
    26         self.rb.show()
    27         pass
    28 
    29     def mouseMoveEvent(self, evt):
    30         # 1.调整橡皮筋选中控件的尺寸范围
    31         self.rb.setGeometry(QRect(self.origin_pos,evt.pos()).normalized()) # normalized()代表正向反向均可
    32         pass
    33 
    34     def mouseReleaseEvent(self, evt):
    35         # 1.获取橡皮筋控件的尺寸范围
    36         rect = self.rb.geometry()
    37         # 2.便利所有的子控件,查看哪些子控件在区域范围
    38         for child in self.children():
    39             if rect.contains(child.geometry()) and child.inherits("QCheckBox"):
    40                 # print(child)
    41                 child.toggle() # 切换状态
    42         self.rb.hide() # 隐藏橡皮筋
    43         pass
    44 
    45 if __name__ == '__main__':
    46     import sys
    47 
    48     app=QApplication(sys.argv)
    49 
    50     window=Window()
    51     window.show()
    52     sys.exit(app.exec_())
    53 # *******************QRubberBand**********************结束
  • 相关阅读:
    用记事本编写一个Servlet项目
    Servlet开发(一)
    41、java与mysql乱码的问题
    40、JDBC相关概念介绍
    mysql-5.7.12-winx64安装版配置、使用
    39、集合线程安全问题
    38、各Set实现类的性能分析
    电脑取随机数是什么原理,是真正的随机数吗?转自知乎.
    创建Car类,实例化并调用Car类计算运输的原料量是否足够
    用Random类输出验证码
  • 原文地址:https://www.cnblogs.com/fengxb1213/p/12739894.html
Copyright © 2011-2022 走看看