28

我正在阅读有关 PySide 的教程,我在想,我是否需要为每一件事找到自己的图标,或者是否有某种方法可以使用一些内置图标。这样,如果我想让我的小 gui 在另一个桌面环境上运行,我就不需要找到一套全新的图标。

4

8 回答 8

45

你需要的是 Pyside QIcon.fromTheme 函数。基本上它使用当前系统主题中所需的图标创建 QIcon 对象。

用法:

undoicon = QIcon.fromTheme("edit-undo")

“编辑撤消” - 图标“类型”/“功能”的名称可以在这里找到

这适用于 X11 系统,对于 MacOSX 和 Windows 检查 QIcon 文档 QIcon.fromTheme

编辑从网站插入这个,因为上次它是一个损坏的链接。

静态PySide.QtGui.QIcon。fromTheme (名称[, fallback=QIcon()] )

参数:

返回类型:

PySide.QtGui.QIcon

返回当前图标主题中名称对应的PySide.QtGui.QIcon 。如果在当前主题中未找到此类图标,则返回后备。

最新版本的freedesktop图标规范和命名规范可以在这里获取:

从当前图标主题中获取图标:

undoicon = QIcon.fromTheme("edit-undo")

或者,如果您想为不支持主题图标的平台提供有保证的回退,您可以使用第二个参数:

undoicon = QIcon.fromTheme("edit-undo", QIcon(":/undo.png"))

笔记

默认情况下,只有 X11 支持主题图标。为了在 Mac 和 Windows 上使用主题图标,您必须在其中一个PySide.QtGui.QIcon.themeSearchPaths()中捆绑一个兼容的主题并设置适当的PySide.QtGui.QIcon.themeName()

也可以看看

于 2012-09-05T19:51:57.587 回答
13

还有另一种方法可以使用默认样式的标准像素图访问 PyQt/PySide 中的一些标准内置图标。例如,以下创建一个用于打开文件的图标:

self.style().standardIcon(QtGui.QStyle.SP_DialogOpenButton)

有关标准像素图的完整列表,请参阅:

http://srinikom.github.io/pyside-docs/PySide/QtGui/QStyle.html#PySide.QtGui.PySide.QtGui.QStyle.StandardPixmap

于 2014-06-10T21:27:08.733 回答
6

我不认为这特定于任何绑定,您可以查看 qt 通用文档

看看这里这里

相关问题

于 2012-07-25T05:39:28.677 回答
5

PyQt5中,这是一个使用播放图标创建按钮的简单示例:

play_button = QtGui.QPushButton('Play video')
play_button.setIcon(QtGui.QApplication.style().standardIcon(QtGui.QStyle.SP_MediaPlay))

Qt5 文档提供了可能的 SP(“标准像素图”)图标的列表。见enum QStyle::StandardPixmap这里:http ://doc.qt.io/qt-5/qstyle.html

于 2018-03-30T20:13:14.500 回答
3

我一直无法找到标准图标的图像,因此以供将来参考: http: //nukesaq88.hatenablog.com/entry/2013/04/12/005525

而我正在使用的代码(PyQt4,Pyside 可能类似):

    # In method of QMainWindow subclass
    stdicon = self.style().standardIcon
    style = QtGui.QStyle
    reload_foo = QtGui.QAction(stdicon(style.SP_BrowserReload), '&Reload', self)

如果(显然是自动生成的)Qt 文档在 standardIcons 枚举表中有图片,那就太好了......

于 2015-10-03T21:59:40.517 回答
2

另一个使用标准图标的 PyQt5 示例(eqzx的答案对我不起作用):

 from PyQt5.QtWidgets import QApplication, QStyle
 from PyQt5.QtGui import QIcon

 desktop_icon = QIcon(QApplication.style().standardIcon(QStyle.SP_DesktopIcon)
于 2018-04-05T15:59:34.937 回答
0

在 PyQt 中,窗口图标默认是 Qt 标志。我认为您将必须在 gui 中找到自己的图标。

于 2012-07-27T17:46:24.950 回答
0

将显示所有内置图标的 PyQt5 示例(列表来自QStyle 文档)。

from PyQt5.QtWidgets import (QApplication, QGridLayout, QPushButton, QStyle, QWidget)

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        icons = [
            'SP_ArrowBack',
            'SP_ArrowDown',
            'SP_ArrowForward',
            'SP_ArrowLeft',
            'SP_ArrowRight',
            'SP_ArrowUp',
            'SP_BrowserReload',
            'SP_BrowserStop',
            'SP_CommandLink',
            'SP_ComputerIcon',
            'SP_DesktopIcon',
            'SP_DialogAbortButton',
            'SP_DialogApplyButton',
            'SP_DialogCancelButton',
            'SP_DialogCloseButton',
            'SP_DialogDiscardButton',
            'SP_DialogHelpButton',
            'SP_DialogIgnoreButton',
            'SP_DialogNoButton',
            'SP_DialogNoToAllButton',
            'SP_DialogOkButton',
            'SP_DialogOpenButton',
            'SP_DialogResetButton',
            'SP_DialogRetryButton',
            'SP_DialogSaveAllButton',
            'SP_DialogSaveButton',
            'SP_DialogYesButton',
            'SP_DialogYesToAllButton',
            'SP_DirClosedIcon',
            'SP_DirHomeIcon',
            'SP_DirIcon',
            'SP_DirLinkIcon',
            'SP_DirLinkOpenIcon',
            'SP_DirOpenIcon',
            'SP_DockWidgetCloseButton',
            'SP_DriveCDIcon',
            'SP_DriveDVDIcon',
            'SP_DriveFDIcon',
            'SP_DriveHDIcon',
            'SP_DriveNetIcon',
            'SP_FileDialogBack',
            'SP_FileDialogContentsView',
            'SP_FileDialogDetailedView',
            'SP_FileDialogEnd',
            'SP_FileDialogInfoView',
            'SP_FileDialogListView',
            'SP_FileDialogNewFolder',
            'SP_FileDialogStart',
            'SP_FileDialogToParent',
            'SP_FileIcon',
            'SP_FileLinkIcon',
            'SP_LineEditClearButton',
            'SP_MediaPause',
            'SP_MediaPlay',
            'SP_MediaSeekBackward',
            'SP_MediaSeekForward',
            'SP_MediaSkipBackward',
            'SP_MediaSkipForward',
            'SP_MediaStop',
            'SP_MediaVolume',
            'SP_MediaVolumeMuted',
            'SP_MessageBoxCritical',
            'SP_MessageBoxInformation',
            'SP_MessageBoxQuestion',
            'SP_MessageBoxWarning',
            'SP_RestoreDefaultsButton',
            'SP_TitleBarCloseButton',
            'SP_TitleBarContextHelpButton',
            'SP_TitleBarMaxButton',
            'SP_TitleBarMenuButton',
            'SP_TitleBarMinButton',
            'SP_TitleBarNormalButton',
            'SP_TitleBarShadeButton',
            'SP_TitleBarUnshadeButton',
            'SP_ToolBarHorizontalExtensionButton',
            'SP_ToolBarVerticalExtensionButton',
            'SP_TrashIcon',
            'SP_VistaShield',
        ]

        layout = QGridLayout()

        for n, name in enumerate(icons):
            btn = QPushButton(name)
            pixmapi = getattr(QStyle.StandardPixmap, name)
            icon = self.style().standardIcon(pixmapi)
            btn.setIcon(icon)
            layout.addWidget(btn, int(n / 4), n % 4)

        self.setLayout(layout)

app = QApplication([])
w = Window()
w.show()
app.exec()
于 2022-01-23T12:23:49.303 回答