以下代码段正确设置了“组合框”下拉列表中各个条目的颜色。然而,当选择并传送到CurrentText字段项目时, 所有_在下拉变化CurrentText的颜色的条目。如何在 _不 影响下拉列表的 情况下 传输要显示为CurrentText的条目的颜色?
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class ComboDemo(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): def combo_changed(): for color in ('red', 'green', 'blue'): if color == cb.currentText(): cb.setStyleSheet('color: {}'.format(color)) grid = QGridLayout() cb = QComboBox() grid.addWidget(cb, 0, 0) model = cb.model() for color in ('red', 'green', 'blue'): entry = QStandardItem(color) entry.setForeground(QColor(color)) model.appendRow(entry) cb.currentIndexChanged.connect(combo_changed) self.setLayout(grid) self.show() app = QApplication(sys.argv) c = ComboDemo() app.exec_()
您必须使用QComboBox:editable:
QComboBox:editable
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class ComboDemo(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): def combo_changed(): for color in ('red', 'green', 'blue'): if color == cb.currentText(): cb.setStyleSheet("QComboBox:editable{{ color: {} }}".format(color)) grid = QGridLayout() cb = QComboBox() grid.addWidget(cb, 0, 0) model = cb.model() for color in ('red', 'green', 'blue'): entry = QStandardItem(color) entry.setForeground(QColor(color)) model.appendRow(entry) cb.currentIndexChanged.connect(combo_changed) self.setLayout(grid) self.show() app = QApplication(sys.argv) c = ComboDemo() app.exec_()