gpt4 book ai didi

python - 如何提取每个项目的名称和背景颜色

转载 作者:行者123 更新时间:2023-12-01 07:18:49 25 4
gpt4 key购买 nike

我正在尝试提取 pyqt5 列表框中每个项目的名称和背景颜色。我的想法是循环索引行以一次选择一行并以 RGB 形式提取名称和背景颜色。我似乎不知道如何实现这一点。以下是我到目前为止的错误代码:提前致谢。

from PyQt5 import QtGui, QtWidgets
from PyQt5.QtWidgets import QAbstractItemView, QListWidgetItem,
import sys

lst_labels = QtWidgets.QListWidget()
lst_labels.setObjectName("lst_labels")
lst_labels.setSelectionMode(QAbstractItemView.SingleSelection)
item=QListWidgetItem('first')
item.setBackground(QtGui.QColor.fromRgb(255,0,0))
lst_labels.addItem(item)
item=QListWidgetItem('second')
item.setBackground(QtGui.QColor.fromRgb(0,255,0))
lst_labels.addItem(item)
item=QListWidgetItem('third')
item.setBackground(QtGui.QColor.fromRgb(0,0,255))
lst_labels.addItem(item)


for i in range (0,lst_labels.count()):
lst_labels.SelectRows(i)
item=lst_labels.selectedItems()

name=item.text()
r=item.background().red()
g=item.background().green()
b=item.background().blue()

if __name__ == '__main__':

lst_labels.show()
sys.exit(app.exec_())

最佳答案

如果您想获取每个项目的信息,则不必选择它,您只需使用 item() 方法迭代项目即可:

import sys
from PyQt5 import QtGui, QtWidgets


if __name__ == "__main__":

app = QtWidgets.QApplication(sys.argv)

lst_labels = QtWidgets.QListWidget()
lst_labels.setObjectName("lst_labels")
item = QtWidgets.QListWidgetItem("first")
item.setBackground(QtGui.QColor.fromRgb(255, 0, 0))
lst_labels.addItem(item)
item = QtWidgets.QListWidgetItem("second")
item.setBackground(QtGui.QColor.fromRgb(0, 255, 0))
lst_labels.addItem(item)
item = QtWidgets.QListWidgetItem("third")
item.setBackground(QtGui.QColor.fromRgb(0, 0, 255))
lst_labels.addItem(item)

for i in range(lst_labels.count()):
it = lst_labels.item(i)
name = it.text()
brush = it.background()
color = brush.color()
print(name)
print(color.red(), color.green(), color.blue())

lst_labels.show()
sys.exit(app.exec_())

如果您想获取用户选择的项目,请使用 itemSelectionChanged 信号和 selectedItems() 方法:

import sys
from PyQt5 import QtGui, QtWidgets


if __name__ == "__main__":

app = QtWidgets.QApplication(sys.argv)

lst_labels = QtWidgets.QListWidget()
lst_labels.setObjectName("lst_labels")
lst_labels.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
item = QtWidgets.QListWidgetItem("first")
item.setBackground(QtGui.QColor.fromRgb(255, 0, 0))
lst_labels.addItem(item)
item = QtWidgets.QListWidgetItem("second")
item.setBackground(QtGui.QColor.fromRgb(0, 255, 0))
lst_labels.addItem(item)
item = QtWidgets.QListWidgetItem("third")
item.setBackground(QtGui.QColor.fromRgb(0, 0, 255))
lst_labels.addItem(item)

def on_itemSelectionChanged():
for it in lst_labels.selectedItems():
name = it.text()
brush = it.background()
color = brush.color()
print(name)
print(color.red(), color.green(), color.blue())

lst_labels.itemSelectionChanged.connect(on_itemSelectionChanged)

lst_labels.show()
sys.exit(app.exec_())

关于python - 如何提取每个项目的名称和背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57808127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com