gpt4 book ai didi

python - PyQt:如何自定义 QComboBox 项目外观

转载 作者:太空狗 更新时间:2023-10-30 00:50:15 38 4
gpt4 key购买 nike

是否可以先创建一个组合框项,然后设置其显示属性(如背景颜色、图标、字体颜色、字体大小等),然后才将其添加到组合框使用QComoboBox.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))

稍后编辑

这里是 QCombobox 的自定义项的工作示例。谢谢 ekhumoro!


from PyQt4 import QtGui, QtCore

def main():
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
main_layout = QtGui.QVBoxLayout()
# QComboBox
combo = QtGui.QComboBox()
model = combo.model()
for row in range(10):
item = QtGui.QStandardItem(str(row))
item.setForeground(QtGui.QColor('red'))
font = item.font()
font.setPointSize(10)
item.setFont(font)
model.appendRow(item)
main_layout.addWidget(combo)

ok_button = QtGui.QPushButton("OK")
ok_button.clicked.connect(OK)
main_layout.addWidget(ok_button)

main_layout.addStretch(1)
window.setLayout(main_layout)
window.show()
sys.exit(app.exec_())

def OK(self):
print 'OK'

if __name__ == '__main__':
main()

最佳答案

默认情况下,QComboBox 使用 QStandardItemModel , 所以 QStandardItem方法可用于更改各种显示属性:

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)

附言:

如果你想重置其中一个 item properties ,将其设置为 None,如下所示:

    item = self.combo.model().item(row)
item.setData(None, Qt.ForegroundRole)

关于python - PyQt:如何自定义 QComboBox 项目外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887496/

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