PyQt 实现对话框图标
PyQt implementing dialog icons
每个 OS 都有自己的文件浏览器实现,在 PyQt 中,使用 QFileDialog 将始终显示 OS 的版本。
一些应用程序甚至有自己的这些 windows 实现,并且有自己的 back/forward/up 这些对话框的按钮图标。这里有几个例子:
铸造厂马里
欧特克玛雅
两者 windows 来自相同的代码,
from PySide import QtGui
QtGui.QFileDialog.getExistingDirectory(QtGui.QWidget(), "Select Directory"))
我假设这是因为软件(在本例中为 Maya 或 Mari)应用的样式表或其他一些实现,但关键是,我正在制作一个应用程序喜欢用同样的方法。这样一来,无论用户在什么应用程序中调用我的 GUI,它总是看起来就像他们过去在该特定软件中看到的那样。
您可以使用QStyle.standardIcon
获取全局样式图标(通常从系统继承,除非它被更改)
style = QApplication.instance().style()
icon = style.standardIcon(QStyle.SP_BrowserReload)
还有 QIcon.fromTheme
,但目前仅适用于 linux。
您可以使用以下 2017/Qt5 兼容代码浏览 Autodesk Maya 中包含的所有可用图标资源,该代码会生成一个基本的 search/filter 对话框:
import maya.app.general.resourceBrowser as resourceBrowser
resBrowser = resourceBrowser.resourceBrowser()
resource_path = resBrowser.run()
print(path) # SP_ComputerIcon.png
生成的 SP_ComputerIcon.png
与上面 Autodesk Maya 对话框截图中的图标相同。
一旦您知道图像资源路径,就可以使用任何包含的资源:
# NOTE: Maya 2017 defaults to PySide2/Qt5, this won't work in 2016 or earlier
from PySide2 import QtGui, QtWidgets
testWindow = QtWidgets.QMainWindow()
testWindow.resize(100,100)
resource_path = 'SP_ComputerIcon.png' # grabbed using preceding code
pixmap = QtGui.QPixmap(':/{}'.format(resource_path))
icon = QtGui.QIcon(pixmap)
button = QtWidgets.QToolButton()
button.setIcon(icon)
testWindow.setCentralWidget(button)
testWindow.show()
每个 OS 都有自己的文件浏览器实现,在 PyQt 中,使用 QFileDialog 将始终显示 OS 的版本。
一些应用程序甚至有自己的这些 windows 实现,并且有自己的 back/forward/up 这些对话框的按钮图标。这里有几个例子:
铸造厂马里
欧特克玛雅
两者 windows 来自相同的代码,
from PySide import QtGui
QtGui.QFileDialog.getExistingDirectory(QtGui.QWidget(), "Select Directory"))
我假设这是因为软件(在本例中为 Maya 或 Mari)应用的样式表或其他一些实现,但关键是,我正在制作一个应用程序喜欢用同样的方法。这样一来,无论用户在什么应用程序中调用我的 GUI,它总是看起来就像他们过去在该特定软件中看到的那样。
您可以使用QStyle.standardIcon
style = QApplication.instance().style()
icon = style.standardIcon(QStyle.SP_BrowserReload)
还有 QIcon.fromTheme
,但目前仅适用于 linux。
您可以使用以下 2017/Qt5 兼容代码浏览 Autodesk Maya 中包含的所有可用图标资源,该代码会生成一个基本的 search/filter 对话框:
import maya.app.general.resourceBrowser as resourceBrowser
resBrowser = resourceBrowser.resourceBrowser()
resource_path = resBrowser.run()
print(path) # SP_ComputerIcon.png
生成的 SP_ComputerIcon.png
与上面 Autodesk Maya 对话框截图中的图标相同。
一旦您知道图像资源路径,就可以使用任何包含的资源:
# NOTE: Maya 2017 defaults to PySide2/Qt5, this won't work in 2016 or earlier
from PySide2 import QtGui, QtWidgets
testWindow = QtWidgets.QMainWindow()
testWindow.resize(100,100)
resource_path = 'SP_ComputerIcon.png' # grabbed using preceding code
pixmap = QtGui.QPixmap(':/{}'.format(resource_path))
icon = QtGui.QIcon(pixmap)
button = QtWidgets.QToolButton()
button.setIcon(icon)
testWindow.setCentralWidget(button)
testWindow.show()