2016-10-27 2 views
0

녹색 버튼을 만들고 싶습니다. 이 스타일링하기 전에 한둥근 모서리를 유지하는 스타일 단추 배경

다음
self.detectButton.setStyleSheet("background: #00ff00") 

:

enter image description here

그리고 후 :

enter image description here

당신이 볼 수 있듯이, 색상 변경,하지만 난 이런 짓을 둥근 모서리가 사라졌습니다.

모서리를 잃지 않도록 색상 스타일을 지정하는 적절한 방법은 무엇입니까?

둘째, 테마 일반 "ok"버튼 색상을 얻을 수있는 방법이 있습니까? 다른 플랫폼에서도 마찬가지입니다.

답변

1

모든 플랫폼에서 완전히 일관된 결과를 얻으려면 스타일 시트를 사용하지 마십시오. 그 이유는 this answer에 설명되어 있습니다.

만 배경색을 설정해야하는 경우, 위젯의 palette 사용 :

palette = self.detectButton.palette() 
palette.setColor(QtGui.QPalette.Button, QtGui.QColor('#00ff00')) 
self.detectButton.setPalette(palette) 

모든 플랫폼에서 잘 동일하게 작동 색상을 생성하는 체계적인 방법이 같지는 않다. 아마도 최선의 방법은 palette color roles을 통해 액세스 할 수있는 시스템 색상 중 하나를 조정하는 것입니다.

편집 :

내가 팔레트 방법은 신뢰할 수있는 크로스 플랫폼 해결책이 가정하는 잘못 보인다. QPalette에 대한 Qt는 워드 프로세서는 다음과 같은있다 :

경고 : 그들은 기본 테마 엔진을 활용할 경우 일부 스타일은, 예를 들어, 모든 그리기 위해 팔레트를 사용하지 마십시오. Windows XP, Windows Vista 및 OS X 스타일 모두에 대해 입니다.

그래서 백그라운드 색상을 변경하는 것처럼 간단한 작업을 수행하는 완전히 일관된 플랫폼 간 방법이없는 것 같습니다.

+0

흠, 나는 이것을 시도했지만 아무런 효과가 없었다. 내가 잘못한 것을 알아내는 방법을 모르겠다. 어떤 생각이 들까? – Claudiu

+0

@Claudiu. 역할에'QtGui.QPalette.Window'를 사용해보십시오. – ekhumoro

+0

palette.setColor (QtGui.QPalette.Button, QtGui.QColor ('# 00ff00'))'대신'palette.setColor (QtGui.QPalette.Window, QtGui.QColor ('# 00ff00')) 하지만 아직 갈 곳이 없습니다 :/ – Claudiu

0

저는 파이썬에 익숙하지 않지만 수동으로 설정할 때 다른 모든 스타일을 제거한다고 가정하고 있습니다.

다음과 같이 작동하는지 궁금합니다.

self.detectButton.setStyleSheet("background: #00ff00; border:1px solid #ccc; border-radius: 3px;") 

여러 구문에 대해 서로 다른 구문을 사용하고있을 수 있습니다.

관련 문제