2014-11-21 6 views
0

안녕하세요, Linux 컴퓨터 (Ubuntu 14.10)에서 현재 테마의 아이콘을 가져 오려고합니다.PyQt5 QIcon.hasThemeIcon (...) always true

from PyQt5 import QtGui 
icon = QtGui.QIcon.fromTheme('edit-copy') 

그러나

icon.themeName() #and 
icon.availableSizes() 

반환 빈 문자열 : 지금까지 내가 이해이 나에게 올바른 아이콘을 제공해야합니다. 또한 :

QtGui.QIcon.hasThemeIcon('icon_that_does_definitely_not_exist') 

또한 True을 반환합니다. 왜?

내 변수 icon에서 전체 아이콘 경로를 추출하는 방법이 있습니까?

답변

1

픽스맵과 관련된 작업을 수행하기 전에 항상 QApplication을 만들어야합니다. 예제 코드는 생성하려고 시도 할 시점에 이르지 못하지만 그렇게했다면 즉시 충돌 할 것입니다. QIcon 메서드의 동작은 QApplication이 만들어지기 전에 "정의되지 않은"것으로 가장 잘 묘사됩니다. 여기

그러나

것들에게 (리눅스) 올바른 방법으로 할 때 내가 무엇을 얻을 수 있습니다 :

>>> from PyQt5 import QtGui, QtWidgets 
>>> app = QtWidgets.QApplication(['']) 
>>> icon = QtGui.QIcon.fromTheme('edit-copy') 
>>> icon.themeName() 
'oxygen' 
>>> icon.availableSizes() 
[PyQt5.QtCore.QSize(48, 48), PyQt5.QtCore.QSize(32, 32), PyQt5.QtCore.QSize(22, 22), PyQt5.QtCore.QSize(16, 16)] 
>>> QtGui.QIcon.hasThemeIcon('icon_that_does_definitely_not_exist') 
False 

밖으로 찾을 수있는 아이콘이에서 온 수 있습니다, 당신이 시도 할 수 있습니다 :

>>> QtGui.QIcon.themeSearchPaths() 
['/home/foo/.icons', '/usr/local/share/icons', '/usr/share/icons', ':/icons'] 

QIcon은 관련 이미지 그룹을 나타내므로 (예 : 런타임시 생성되는 비활성화 된 아이콘과 같이) 디스크의 해당 파일조차 가지고 있지 않기 때문에 "the"아이콘 경로를 묻는 것은 의미가 없습니다.