È possibile creare prima una voce ComboBox, quindi impostare le sue proprietà di visualizzazione (come colore di sfondo, icona, colore del carattere, dimensione del carattere, ecc. E solo per aggiungerla a ComboBox usando il metodo di Comobobox .addItem() come è ora mi sono bloccato utilizzando:?.PyQt: Come personalizzare la visualizzazione degli elementi ComboBox
myCombobox = QtGui.QComboBox
for i in range(10):
myCombobox.addItem(str(i))
Inutile dire che questo approccio lascia poco spazio per la personalizzazione degli elementi del singolo ComboBox visualizzare le proprietà Quello che vorrei è qualcosa di simile :
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))
Modificato dopo
Ecco un esempio funzionante degli articoli personalizzati di QCombobox. Grazie 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()
In perfetto orario! Grazie mille! – alphanumeric
Come si ripristina il colore di primo piano di un oggetto su un valore predefinito "nessun colore"? ... dopo che l'elemento era già impostato item.setForeground (QtGui.QColor ('red')) è necessario passare dalla visualizzazione del colore a quella predefinita e viceversa ... – alphanumeric
@Sputnix. Vedi la mia risposta aggiornata. Inoltre: ho appena realizzato che 'QComboBox' utilizza già un' QStandardItemModel', quindi ho semplificato il mio esempio di conseguenza. – ekhumoro