2017-05-19 4 views
0

PyQt5에 QListWidget을 설정하여 스 와이프 할 때 확인란을 선택 또는 선택 취소하고 싶습니다. 여기 PyQt5 - 스 와이프하여 QListWidget에서 확인/선택 취소하십시오.

내 인터페이스 :

enter image description here

그리고 내 코드 :

내가 항목 4를 클릭 할 그것을 취소해야
import sys 
from PyQt5.QtCore import QDate, QSize, Qt 
from PyQt5.QtGui import * 
from PyQt5.QtWidgets import * 

class VerifyDialog(QDialog): 
    def __init__(self, parent=None): 
     super(VerifyDialog, self).__init__(parent) 

     self.listWidget = QListWidget() 

     for i in range(100): 
      item = QListWidgetItem("Item %i" % i) 
      # could be Qt.Unchecked; setting it makes the check appear 
      item.setCheckState(Qt.Checked) 
      self.listWidget.addItem(item) 

     runButton = QPushButton("Run") 
     runButton.clicked.connect(self.exec) 

     cancelButton = QPushButton("Cancel") 
     cancelButton.clicked.connect(self.close) 

     horizontalLayout = QHBoxLayout() 
     horizontalLayout.addWidget(self.listWidget, 1) 

     buttonsLayout = QHBoxLayout() 
     buttonsLayout.addStretch(1) 
     buttonsLayout.addWidget(runButton) 
     buttonsLayout.addWidget(cancelButton) 

     mainLayout = QVBoxLayout() 
     mainLayout.addLayout(horizontalLayout) 
     mainLayout.addSpacing(12) 
     mainLayout.addLayout(buttonsLayout) 

     self.setLayout(mainLayout) 
     self.setWindowTitle("Config Dialog") 
     self.show() 

if __name__=="__main__": 
    app = QApplication(sys.argv) 
    dialog = VerifyDialog() 
    sys.exit(app.exec_()) 

(이 상자를 클릭보다 더 쉽게), 및 그러면 아래로 드래그하여 다른 많은 항목을 선택 취소합니다.

답변

0

itemEntered 마우스를 사용하여 개체를 보내는 신호를 사용해야합니다.

self.listWidget.itemEntered.connect(lambda item: item.setCheckState(Qt.Checked if item.checkState()==Qt.Unchecked else Qt.Unchecked)) 

전체 코드 :

import sys 
from PyQt5.QtCore import QDate, QSize, Qt 
from PyQt5.QtGui import * 
from PyQt5.QtWidgets import * 

class VerifyDialog(QDialog): 
    def __init__(self, parent=None): 
     super(VerifyDialog, self).__init__(parent) 

     self.listWidget = QListWidget() 

     self.listWidget.itemEntered.connect(lambda item: item.setCheckState(Qt.Checked if item.checkState()==Qt.Unchecked else Qt.Unchecked)) 


     for i in range(100): 
      item = QListWidgetItem("Item %i" % i) 
      # could be Qt.Unchecked; setting it makes the check appear 
      item.setCheckState(Qt.Checked) 
      self.listWidget.addItem(item) 

     runButton = QPushButton("Run") 
     runButton.clicked.connect(self.exec) 

     cancelButton = QPushButton("Cancel") 
     cancelButton.clicked.connect(self.close) 

     horizontalLayout = QHBoxLayout() 
     horizontalLayout.addWidget(self.listWidget, 1) 

     buttonsLayout = QHBoxLayout() 
     buttonsLayout.addStretch(1) 
     buttonsLayout.addWidget(runButton) 
     buttonsLayout.addWidget(cancelButton) 

     mainLayout = QVBoxLayout() 
     mainLayout.addLayout(horizontalLayout) 
     mainLayout.addSpacing(12) 
     mainLayout.addLayout(buttonsLayout) 

     self.setLayout(mainLayout) 
     self.setWindowTitle("Config Dialog") 
     self.show() 


if __name__=="__main__": 
    app = QApplication(sys.argv) 
    dialog = VerifyDialog() 
    sys.exit(app.exec_()) 
+0

와우 와우 와우! 고맙습니다!!!! – vy32

+0

내 대답에 도움이된다면, 올바른 것으로 표시하십시오. – eyllanesc

+0

네, 그냥 확인해 보았습니다. 약간의 개선이 필요하지만 대부분 거기에 있습니다. – vy32