2012-09-29 22 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

में आपका स्वागत है stackoverflow करने के लिए:

आप एक मनमाना पृष्ठभूमि रंग का उपयोग करना चाहते हैं, तो इसके लिए विजेट के पैलेट को संशोधित करने की जरूरत है! "क्यों" और "कैसे" दोनों का जवाब देने के लिए धन्यवाद! – user763305

+4

कोई समस्या नहीं है। मुझे यह जोड़ना चाहिए कि क्यूटी दस्तावेज थोड़ा अस्पष्ट है: 'QPalette :: विंडो' भूमिका का उपयोग विजेट की पृष्ठभूमि को भरने के लिए किया जाता है यदि यह शीर्ष-स्तरीय विंडो है। अन्यथा, इसके बजाय आपके विजेट की 'पृष्ठभूमि रोल' का उपयोग किया जाता है, इसलिए आपका कोड अपेक्षित कार्य करना चाहिए। – jmk

संबंधित मुद्दे