2014-03-27 2 views
1

QtGui.QFrame 객체 (이 경우 self)에 배경 이미지를 설정하려고합니다. 이미지의 경로에 Windows 7의 "Björn"이라는 스웨덴어 사용자 디렉토리가 있습니다. 문제는 'ö'특수 문자로 py에 '\ xf6'으로 코딩되어 있습니다. 쉘에PyQt : setStyleSheet의 특수 문자 url()

테스트 :

self.setStyleSheet("""QFrame {background: url(c:\Users\Bj\xf6rn\image.png) center no-repeat;} """) 

을하지만 그것은 작동하지 않습니다

>>>"Björn" 
'Bj\xf6rn' 

우리는이 일을하고 싶습니다.

"특수 문자"가없는 다른 디렉토리에서 작동하지만이 경우에는 "스웨덴어"디렉토리를 처리해야합니다.

어떤 아이디어가이 문제를 해결할 수 있습니까?

답변

1

스타일 시트에 몇 가지 문제가 있습니다.

첫째, 경로에 백 슬래시를 사용할 수 없습니다. 슬래시를 사용해야합니다. 둘째, 비 ASCII 문자를 포함 할 때는 따옴표를 사용해야합니다. 셋째, 이스케이프 처리되지 않은 일반 유니 코드 문자 또는 css escaping syntax을 사용해야합니다. 마지막으로 파이썬 2를 사용하는 경우 이스케이프 처리되지 않은 유니 코드 문자를 포함하려면 유니 코드 문자열 (예 : u"")을 사용해야합니다.

이스케이프 처리되지 않은 유니 코드 문자를 사용하려면 사용중인 파이썬 버전에 따라 파이썬 모듈의 인코딩을 선언해야합니다. 수정 UTF-8 인코딩 python2 들어

: python3 들어

# -*- coding: utf-8 -*- 

self.setStyleSheet(u""" 
    QFrame {background: url('c:/Users/Björn/image.png') center no-repeat;} 
    """) 

, 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;} 
    """)