pyqt qlistwidget Operation of Changing item Color

  • 2021-10-11 19:08:24
  • OfStack

I won't talk too much, let's just look at the code ~

Example:


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys
class Win(QWidget):
  def __init__(self):
    super(Win, self).__init__()
    self.setObjectName("self")
    self.resize(400, 300)
    self.listWidget = QtWidgets.QListWidget(self)
    self.listWidget.setGeometry(QtCore.QRect(10, 20, 256, 192))
    self.listWidget.setObjectName("listWidget")
    self.pushButton = QtWidgets.QPushButton(self)
    self.pushButton.setGeometry(QtCore.QRect(280, 60, 75, 23))
    self.pushButton.setObjectName("pushButton")
    self.pushButton.clicked.connect(self.add)
    self.retranslateUi()
    QtCore.QMetaObject.connectSlotsByName(self)
  def retranslateUi(self):
    _translate = QtCore.QCoreApplication.translate
    self.setWindowTitle(_translate("self", "self"))
    self.pushButton.setText(_translate("self", "PushButton"))
  def add(self):
    self.listWidget.addItem('123')
    index=self.listWidget.currentRow()+1
    if index:
      self.listWidget.item(index-1).setBackground(QColor('green'))    
      self.listWidget.item(index).setBackground(QColor('red'))
    else:
      self.listWidget.item(index).setBackground(QColor('blue'))
    self.listWidget.setCurrentRow(self.listWidget.currentRow()+1)
app=QApplication(sys.argv)
win=Win()
win.show()
sys.exit(app.exec_())

Supplement: PyQt QListWidget Remove pits from item

Using the removeItemWidget function requires the QListWidgetItem object itself as a parameter, through findItems to get the object, called the function, but still no response, PyQt5 bug?

Delete succeeded using takeItem


item=self.listWidget.findItems(' Zhang 3',Qt.MatchExactly)[0]
row=self.listWidget.row(item)
print(row)
self.listWidget.takeItem(row)

Related articles: