Önce bir ComboBox öğesi oluşturmak mümkün mü, daha sonra görüntü özelliklerini (öğenin arka plan rengi, simge, yazı tipi rengi, yazı tipi boyutu vb. Gibi) ve sonra ComboBox'a eklemek için .PyQt: ComboBox Öğeleri nasıl özelleştirilir?
myCombobox = QtGui.QComboBox
for i in range(10):
myCombobox.addItem(str(i))
bu yaklaşım bireysel ComboBox'ın ürün özelliklerini görüntülemek özelleştirme için az yer bırakır söylemeye gerek yok ne istiyorum böyle bir şeydir:? şimdi olduğu kullanıyorum şaşırıp gibi Comobobox en .addItem() yöntemini kullanarak :
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))
Daha sonra düzenlendi
İşte QCombobox'ın özelleştirilmiş öğelerinin çalışan bir örneğidir. Teşekkürler Ekhumoro!
Varsayılan olarak
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()
Tam zamanında! Çok teşekkür ederim! – alphanumeric
Bir öğenin ön plan rengini varsayılan olarak "renk yok" durumuna nasıl sıfırlarız? ... öğeyi zaten item.setForeground (QtGui.QColor ('kırmızı') olarak ayarladıktan sonra ekranını varsayılandan renkli ve tersine çevirmeye ihtiyaç var ... – alphanumeric
@Sputnix. Güncellenmiş cevabımı görün. Ayrıca: "QComboBox" un zaten bir "QStandardItemModel" kullandığını fark ettim, dolayısıyla örneğimi buna göre basitleştirdim. – ekhumoro