PyQt5 ComboBox-如何设置CurrentText的颜色而不影响下拉列表?
发布于 2021-01-29 16:39:07
以下代码段正确设置了“组合框”下拉列表中各个条目的颜色。然而,当选择并传送到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_()
关注者
0
被浏览
47
1 个回答
-
您必须使用
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_()