2017-10-08 160 views
1

我無法在PyQt中更改QCombobox的突出顯示顏色。我設法改變了實際輸入框的高亮顏色,但是當下拉菜單出現時它仍然是藍色的。以下圖片顯示了究竟發生了什麼。調色板方法適用於Linux,但不適用於Windows(我目前使用的方法)。 我用PyQt的調色板:如何在PyQt中更改QCombobox突出顯示顏色

brush = QtGui.QBrush(QtGui.QColor(168, 168, 168)) 
    brush.setStyle(QtCore.Qt.SolidPattern) 
    palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Highlight, brush) 
    self.comboBox_7.setPalette(palette) 

在這裏,我設法改變高亮顏色爲灰色實際盒:

image1

但這裏的下拉亮點依然是藍色:

image2

所有幫助讚賞。

+0

調色板不會改變的東西原地的,所以你需要使用'調用SetPalette(調色板)'。 – ekhumoro

+0

@ekhumoro對不起,這已經完成,它仍然不會改變顏色,只是框的高亮顏色(第一張圖片)。將更新有問題的代碼。 – Kermit

+0

在linux上適合我。如果你在windows或osx上,調色板有時會被忽略。您可能需要使用樣式表。 – ekhumoro

回答

1

按照Qt docs,調色板可能不總是在某些平臺上工作:

警告:有些款式不使用調色板的所有圖紙,爲 例如,如果他們利用本土主題引擎。無論是Windows XP,Windows Vista還是macOS樣式,都是 。

Qt Style Sheets Overview表明樣式表應該在調色板沒有的地方工作。在Linux以外的任何東西,我不能這個測試自己,但以下似乎好工作:

from PyQt5 import QtWidgets 
app = QtWidgets.QApplication(['']) 
combo = QtWidgets.QComboBox() 
combo.addItems('One Two Three'.split()) 
combo.setStyleSheet('selection-background-color: rgb(168,168,168)') 
combo.show() 
app.exec_() 
+0

之前嘗試過,它可悲地沒有解決問題。 – Kermit

+0

@Kermit。你的意思是它不適用於你自己的代碼,或者我在答案中顯示的代碼不起作用? – ekhumoro

+0

@ekhumuro我的意思是將「選擇背景顏色:rgb(168,168,168)」添加到組合框的樣式表不起作用。 – Kermit

相關問題