2011-12-20 8 views
8

To może być łatwe pytanie, ale próbuję nadać kolor konkretnemu QLabel w mojej aplikacji i to nie działa.PyQt nadaje kolor konkretnemu elementowi.

Kod Próbowałem to:

nom_plan_label = QtGui.QLabel() 
nom_plan_label.setText(nom_plan_vignette) 
nom_plan_label.setStyleSheet("QLabel#nom_plan_label {color: yellow}") 

Każda wskazówka będzie mile widziane

Odpowiedz

17

Istnieje kilka rzeczy źle z stylesheet syntax używasz.

Po pierwsze, selektory ID (tj. #nom_plan_label) muszą odnosić się do widgetu objectName.

Po drugie, konieczne jest użycie selektorów tylko wtedy, gdy arkusz stylów zostanie zastosowany do widgetu nadrzędnego i chcesz, aby określone reguły stylu kaskadowały się do poszczególnych potomnych widżetów. Jeśli aplikujesz arkusz stylów bezpośrednio do jednego widgetu, selektor (i nawiasy klamrowe) można pominąć.

Zważywszy na powyższe dwa punkty, Twój przykład kod stałby się albo:

nom_plan_label = QtGui.QLabel() 
nom_plan_label.setText(nom_plan_vignette) 
nom_plan_label.setObjectName('nom_plan_label') 
nom_plan_label.setStyleSheet('QLabel#nom_plan_label {color: yellow}') 

lub prościej:

nom_plan_label = QtGui.QLabel() 
nom_plan_label.setText(nom_plan_vignette) 
nom_plan_label.setStyleSheet('color: yellow') 
+0

Jedynym możliwym razem myślę, że takie rozwiązanie spowodowałoby to problem jest taki jak ty powiedział z widżetami podrzędnymi. Więc jeśli w jakiś sposób skończył dodawać widżety jako dzieci etykiety, to podniosłoby tę wartość koloru. Jeśli nadal używałeś przynajmniej selektora QLabel, ograniczyłby to do QLabels z tego miejsca i poniżej – jdi