Python PyQt:如何自定义QComboBox项目外观
是否可以先创建组合框项目,然后设置其显示属性(如背景色、图标、字体颜色、字体大小等),然后使用Python PyQt:如何自定义QComboBox项目外观,python,qt,pyqt,qcombobox,Python,Qt,Pyqt,Qcombobox,是否可以先创建组合框项目,然后设置其显示属性(如背景色、图标、字体颜色、字体大小等),然后使用QComobox.addItem()方法将其添加到组合框中?现在,我一直在使用: myCombobox = QtGui.QComboBox for i in range(10): myCombobox.addItem(str(i)) 不用说,这种方法为定制单个组合框项的显示属性留下了很少的空间。我想要的是这样的: myCombobox = QtGui.QComboBox for i in ra
QComobox.addItem()
方法将其添加到组合框中?现在,我一直在使用:
myCombobox = QtGui.QComboBox
for i in range(10):
myCombobox.addItem(str(i))
不用说,这种方法为定制单个组合框项的显示属性留下了很少的空间。我想要的是这样的:
myCombobox = QtGui.QComboBox
for i in range(10):
item = comboboxItem()
item.setColor(allBlueAndShiny)
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
# Only after item was set with all display properties it is added:
myCombobox.addItem(str(i))
item = self.combo.model().item(row)
item.setData(None, Qt.ForegroundRole)
后来编辑
下面是QCombobox的定制项目的工作示例。谢谢你
默认情况下,
QComboBox
使用,因此这些方法可用于更改各种显示属性:
combo = QComboBox()
model = combo.model()
for row in range(10):
item = QStandardItem(str(row))
item.setForeground(QColor('red'))
font = item.font()
font.setPointSize(10)
item.setFont(font)
model.appendRow(item)
PS:
如果要重置其中一个,请将其设置为None
,如下所示:
myCombobox = QtGui.QComboBox
for i in range(10):
item = comboboxItem()
item.setColor(allBlueAndShiny)
font = QtGui.QFont()
font.setPointSize(10)
item.setFont(font)
# Only after item was set with all display properties it is added:
myCombobox.addItem(str(i))
item = self.combo.model().item(row)
item.setData(None, Qt.ForegroundRole)
如何将项目的前景色重置为默认的“无颜色”。。。在项目已设置为item.setForeground(QtGui.QColor('red'))之后,需要将其显示从颜色切换为默认颜色,反之亦然…@Sputnix。请参阅我的最新答案。另外:我刚刚意识到
QComboBox
已经使用了QStandardItemModel
,因此我相应地简化了我的示例。谢谢!我发现,要重置项目的颜色,我可以将其设置为(QtGui.QColor('black'))。当您单击组合框以显示所有项目列表时,项目仅显示其颜色。但是当组合框关闭时,该项不显示颜色(仅显示常规颜色)。是否有任何方法可以“强制”物品在Comobox“折叠”时显示其颜色?@Sputnix。将前景重置为“黑色”是一个错误,因为并非所有配色方案都将该颜色作为默认颜色(深色方案的默认颜色为对比色)。至于另一个问题:我认为这超出了当前问题的范围,所以请开始一个新问题。@TodStoychev。谢谢-这只是从OPs原始代码示例(现已更正)复制的一个小错误。请建议对此类问题进行编辑,因为并非所有人都阅读所有评论。