2017-09-18 139 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