Có thể tạo mục ComboBox trước, sau đó đặt thuộc tính hiển thị (như màu nền, biểu tượng, màu phông chữ, kích thước phông chữ và vv và chỉ sau đó thêm nó vào ComboBox sử dụng phương pháp Comobobox của .addItem() vì nó là bây giờ tôi đang mắc kẹt sử dụng:?.PyQt: Làm thế nào để tùy chỉnh mục ComboBox hiển thị
myCombobox = QtGui.QComboBox
for i in range(10):
myCombobox.addItem(str(i))
Không cần phải nói phương pháp này để lại rất ít không gian cho tùy biến các mặt hàng ComboBox cá nhân hiển thị thuộc tính những gì tôi muốn là một cái gì đó như thế này :
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))
Chỉnh sửa sau
Đây là một ví dụ làm việc về các mục tùy chỉnh của QCombobox. Cảm ơn 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()
Đúng giờ! Cảm ơn nhiều! – alphanumeric
Làm cách nào để đặt lại màu nền trước của mặt hàng thành mặc định "không có màu"? ... sau khi mục đã được thiết lập item.setForeground (QtGui.QColor ('đỏ')) có một nhu cầu để chuyển đổi màn hình của nó từ màu sắc sang mặc định và ngược lại ... – alphanumeric
@Sputnix. Xem câu trả lời cập nhật của tôi. Ngoài ra: Tôi vừa nhận ra rằng 'QComboBox' đã sử dụng một 'QStandardItemModel', vì vậy tôi đã đơn giản hóa ví dụ của tôi cho phù hợp. – ekhumoro