2017-09-18 180 views
0

我有以下代碼設置樣式表時:KeyError異常的QFrame

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

,但我得到了以下錯誤:KeyError: ' border'

我試過一噸的變種,並不能得到這個工作。我正在嘗試設置QFrame的樣式,但不是子部件。

+0

什麼是「邊框」和「背景」? – eyllanesc

+0

你需要翻譯'{'和'}',這個工作。 ''QFrame {{border:1px solid {0};背景:{1}; }}'。格式(邊框,背景)' – Sraw

+0

任何顏色。例如''紅色'或'#ff0000'。如果我拿出「QFrame」和花括號,它的作品,但適用於兒童班的樣式 – steveo225

回答

0

的問題是,有使用格式的風格,這是如下一個困惑:如下圖所示

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

爲了解決這個問題,你必須使用{{}}

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

啊。這就說得通了。我現在感到很蠢。這解決了關鍵的錯誤。我非常專注於風格,我不再考慮Python字符串。但是,並沒有解決我的樣式表問題,因爲它仍然將它們應用到子對象。我可能只需要使用'setObjectName'路徑 – steveo225

+0

@ steveo225我認爲這是另一個問題,如果您顯示更多信息我可以繼續幫助,如果我的答案可以幫助您不要忘記標記爲正確請。 – eyllanesc

+0

@ steveo225您可以通過放置子窗口小部件來改善您的示例代碼,以及您獲得並希望獲得的圖像。 – eyllanesc