pyqt5中设置listwidgetitem被checked时的颜色变化
在PyQt5中,QListWidget是一种用于显示多行数据的控件。当我们在使用QListWidget时,有时会希望当ListWidgetItem被checked(勾选)时,其颜色发生变化,以便提醒用户该项已被选中。本文将详细讨论如何在PyQt5中设置ListWidgetItem被checked时的颜色变化。
1. 创建一个简单的QListWidget
首先,我们需要创建一个简单的QListWidget,并向其中添加一些ListWidgetItem。以下是一个简单的示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QListWidget, QListWidgetItem
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('ListWidget Demo')
layout = QVBoxLayout()
self.list_widget = QListWidget()
items = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5']
for item in items:
list_item = QListWidgetItem(item)
self.list_widget.addItem(list_item)
self.list_widget.itemChanged.connect(self.on_item_changed)
layout.addWidget(self.list_widget)
self.setLayout(layout)
def on_item_changed(self, item):
if item.checkState() == 2:
item.setBackground(Qt.yellow)
else:
item.setBackground(Qt.white)
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
在上面的代码中,我们创建了一个简单的QListWidget,并向其中添加了5个ListWidgetItem。我们还连接了itemChanged
信号到一个名为on_item_changed
的函数。在on_item_changed
函数中,我们检查item的checkState
,如果为2则将item的背景颜色设为黄色,否则设为白色。
2. 运行结果
运行以上代码,可以看到一个简单的QListWidget,其中包含了5个ListWidgetItem。当勾选ListWidgetItem时,其背景颜色将变为黄色,取消勾选时则变回白色。
通过以上示例,我们可以看到如何在PyQt5中设置ListWidgetItem被checked时的颜色变化。通过连接itemChanged
信号,我们可以捕获ListWidgetItem的状态变化并相应地改变其颜色。