【发布时间】:2021-10-14 08:08:21
【问题描述】:
我正在尝试通过单击标签并将鼠标移动到其他复选框上来选择/取消选择 Qcheckbox
我想要的是,例如,单击“0”并保持鼠标单击并将其向下移动到“1”、“2”...通过移动这些复选框,它们必须更改它们的值(真到假)。
我不明白如何使用mouseMoveEvent。
我做了一个最小的代码开始
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class CheckBox(QCheckBox):
def __init__(self, *args, **kwargs):
QCheckBox.__init__(self, *args, **kwargs)
def mouseMoveEvent(self,event):
if event.MouseButtonPress == Qt.MouseButton.LeftButton:
self.setChecked(not self.isChecked())
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__()
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.mainHBOX = QVBoxLayout()
self.CB_list = []
for i in range(20):
CB = CheckBox(str(i))
CB.setChecked(True)
self.CB_list.append(CB)
self.mainHBOX.addWidget(CB)
self.centralWidget.setLayout(self.mainHBOX)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
【问题讨论】: