import sys
from PyQt5.Qt import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setup_ui()
def setup_ui(self):
self.setWindowTitle("Qt桌面应用程序")
self.resize(300, 300)
for i in range(30):
self.check_box = QCheckBox(f"复选{i + 1}", self)
self.check_box.move(i % 4 * 60 + 10, i // 4 * 30 + 10)
self.rubber_band = QRubberBand(QRubberBand.Rectangle, self)
def mousePressEvent(self, a0) -> None:
print(a0.pos())
self.original_position = a0.pos()
self.rubber_band.setGeometry(QRect(self.original_position, QPoint()))
self.rubber_band.setVisible(True)
return super(Window, self).mousePressEvent(a0)
def mouseMoveEvent(self, a0) -> None:
self.rubber_band.setGeometry(QRect(self.original_position, a0.pos()).normalized())
return super(Window, self).mouseMoveEvent(a0)
def mouseReleaseEvent(self, a0) -> None:
for check_box in self.findChildren(QCheckBox):
if self.rubber_band.geometry().contains(check_box.geometry()):
check_box.toggle()
self.rubber_band.setVisible(False)
return super(Window, self).mouseReleaseEvent(a0)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())