2017-09-18 1 views
0

에 대한 스타일을 설정하는 경우 :KeyError를 나는 다음과 같은 코드를 가지고 QFrame

frame = QFrame() 
frame.setStyleSheet('QFrame { border: 1px solid {0}; background: {1}; }'.format(border, background)) 

하지만 다음과 같은 오류가 발생합니다 : KeyError: ' border' 나는 변종의 톤을 시도하고이 동작하지 않습니다

. QFrame을 스타일링하려고 시도하지만 하위 위젯은 스타일링하지 않습니다. 아래 그림과 같이 당신이 {{, }}를 사용해야합니다

"{key}".format(key=some_key) 

는이 문제를 해결하려면 :

+0

'국경'과'배경'이란 무엇입니까? – eyllanesc

+0

'{'와'}'을 번역해야하는데,이 방법이 효과가 있습니다. ''QFrame {{테두리 : 1 픽셀 고체 {0}; 배경 : {1}; }} '. 형식 (테두리, 배경)' – Sraw

+0

모든 색상. 예를 들어 양쪽 모두에'red' 또는'# ff0000'입니다. "QFrame"및 중괄호를 꺼내면 작동하지만 하위 클래스에 스타일을 적용합니다. – steveo225

답변

0

문제는 다음과 같다 형식을 사용하는 스타일과 혼란이 있다는 것입니다

app = QApplication(sys.argv) 
frame = QFrame() 
border = 6 
background = '#ff0000' 
frame.setStyleSheet("""QFrame{{ border: 1px solid {0}; background: {1}; }}""".format(border, background)) 
frame.show() 
sys.exit(app.exec_()) 
+0

아. 그건 의미가 있습니다. 나는 지금 어리 석다. 핵심 오류가 수정되었습니다. 스타일에 너무 집중했기 때문에 파이썬 문자열에 대해 생각해 보지 않았습니다. 그러나 여전히 자식 객체에 적용했기 때문에 스타일 시트 문제를 해결하지 못했습니다. 나는 단지'setObjectName' 경로를 사용해야 할 수도 있습니다. – steveo225

+0

@ steveo225 또 다른 문제라고 생각합니다. 더 많은 정보를 보여 주면 도움을 계속할 수 있습니다. 내 답변을 통해 올바른 것으로 표시하는 것을 잊지 마시기 바랍니다. – eyllanesc

+0

@ steveo225 자식 위젯뿐만 아니라 얻고 싶은 이미지를 배치하여 예제 코드를 향상시킬 수 있습니다. – eyllanesc

관련 문제