2012-09-29 2 views
10

아래 코드의 w.setBackgroundRole(QPalette.Base) 행은 아무 효과가 없습니다. 왜? 어떻게 수정해야합니까?QWidget 배경색을 설정하는 방법은 무엇입니까?

import sys 
from PySide.QtCore import * 
from PySide.QtGui import * 

app = QApplication(sys.argv) 
w = QWidget() 
w.setBackgroundRole(QPalette.Base) 
w.show() 
app.exec_() 

답변

35

위젯에는 setAutoFillBackground(True) (으)로 전화해야합니다. 기본적으로 QWidget은 배경을 채우지 않습니다.

자세한 내용은 setAutoFillBackground 속성에 대한 설명서를 참조하십시오. 당신이 임의의 배경 색상을 사용하려면

대신 위젯의 팔레트를 수정해야합니다

p = w.palette() 
p.setColor(w.backgroundRole(), Qt.red) 
w.setPalette(p) 
+2

에 오신 것을 환영에 유래하는! "이유"와 "방법"모두에 답해 주셔서 감사합니다! – user763305

+4

문제 없습니다. 나는 Qt 문서가 약간 불명하다고 덧붙여 야한다 :'QPalette :: Window' 역할은 최상위 창인 경우 위젯의 배경을 채우기 위해 사용된다. 그렇지 않으면 위젯의'backgroundRole'이 대신 사용되므로 코드가 예상대로 작동해야합니다. – jmk

관련 문제