我们想在QtGui.QFrame对象上设置背景图像(在本例中为self)。 图像的路径在Windows 7上有一个名为“Björn”的Swedish Users目录。 问题是特殊字符'ö',在py。
中编码为'\ xf6'在shell上测试:
>>>"Björn"
'Bj\xf6rn'
我们想这样做:
self.setStyleSheet("""QFrame {background: url(c:\Users\Bj\xf6rn\image.png) center no-repeat;} """)
但它不起作用。
我们知道它可以在没有“特殊字符”的另一个目录中工作,但在我们的例子中,我们必须处理一个“瑞典”目录。
任何想法,解决这个问题?
答案 0 :(得分:1)
样式表有几个问题。
首先,你不能在路径中使用反斜杠;你必须使用正斜杠。其次,在包含非ascii字符时应使用引号。第三,您应该使用普通的,未转义的unicode字符或css escaping syntax。最后,如果你正在使用python2,你必须使用unicode字符串(即u""
),如果你想包含未转义的unicode字符。
要使用未转义的unicode字符,您可能需要声明python模块的编码,具体取决于您使用的python版本。
对于python2,使用utf-8编码:
# -*- coding: utf-8 -*-
self.setStyleSheet(u"""
QFrame {background: url('c:/Users/Björn/image.png') center no-repeat;}
""")
对于python3,默认采用utf-8,因此不需要编码声明:
self.setStyleSheet("""
QFrame {background: url('c:/Users/Björn/image.png') center no-repeat;}
""")
对于任一版本,使用css转义:
self.setStyleSheet("""
QFrame {background: url('c:/Users/Bj\\0000F6rn/image.png') center no-repeat;}
""")