首页 > 解决方案 > 如何在 Snapcraft PyQt5 应用程序中的 Ubuntu Budgie 中显示托盘图标?

问题描述

我使用 PyQt5 开发了一个 Snapcraft 应用程序。它有一个带有菜单的托盘图标。除了 Ubuntu Budgie(我在 Parallels VM 中的 Mac 上运行)之外,在我尝试过的所有 Linux 风格中,托盘图标都显示得很好,就像它应该的那样。

Linux-5.4.0-84-generic-x86_64-with-Ubuntu-20.04-focal
Ubuntu 20.04.3 LTS

当我直接从终端运行我的 python 文件(而不是先捕捉它)时,图标会完美显示(即使在 Budgie 上也是如此)。就像在下面的屏幕截图中一样。

在此处输入图像描述

但是当快速运行时,它不会显示(仅在 Budgie 上——它在其他平台上显示良好)。相反,会显示一个“缺失图像”图标,如下面的屏幕截图所示。

在此处输入图像描述

图像本身是硬编码的 base-64 图像,所以它不是在文件系统中找不到它,也不是权限无效。我的最小可重现示例 python 代码如下。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import PIL
import PIL.Image
import sys

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class MyApp:
    qtApp = None
    trayIcon = None
    contextMenu = None
    
    def __init__(self):
        self.qtApp = QApplication(sys.argv)
        self.qtApp.setApplicationName('My App Name')
        
        smileyIcon = b'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'
        
        pixmap = QPixmap()
        pixmap.loadFromData(QByteArray.fromBase64(smileyIcon))
        
        icon = QIcon(pixmap)
        self.trayIcon = QSystemTrayIcon()
        self.trayIcon.setIcon(icon)
        self.contextMenu = QMenu()
        
        btnAbout = QAction("About App")
        self.contextMenu.addAction(btnAbout)
        
        self.trayIcon.setContextMenu(self.contextMenu)
        self.trayIcon.setVisible(True)
        self.trayIcon.show()
        self.qtApp.exec()
        
if __name__ == "__main__":
    myApp = MyApp()

这是我的 snapcraft.yaml 文件的代码:

name: testapp
base: core18
version: '1.0.0'
title: 'TestApp'
summary: 'Just a test app to do tests with'
description: 'Just a test app to do tests with'
grade: stable
confinement: strict

apps:
    testapp:
        command: bin/desktop-launch python3 $SNAP/main.py &
        plugs:
            - desktop
            - desktop-legacy
            - x11
            - unity7
            - gsettings
        environment:
            DISABLE_WAYLAND: 1

parts:
    copy-stuff:
        plugin: dump
        source: .
    desktop-gtk3:
        build-packages:
            - build-essential
            - libgtk-3-dev
            - appmenu-gtk2-module
            - appmenu-gtk3-module
        make-parameters:
            - FLAVOR=gtk3
        plugin: make
        source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
        source-subdir: gtk
        stage-packages:
            - libxkbcommon0
            - dmz-cursor-theme
            - adwaita-icon-theme
            - gnome-themes-standard
            - shared-mime-info
            - libgtk-3-0
            - libgdk-pixbuf2.0-0
            - libglib2.0-bin
            - libgtk-3-bin
            - libappindicator3-1
            - locales-all
            - xdg-user-dirs
            - ibus-gtk3
            - libibus-1.0-5
            - fcitx-frontend-gtk3
            - appmenu-gtk2-module
            - appmenu-gtk3-module
            - libappindicator1
    testapp:
        plugin: python
        python-version: python3
        source: .
        python-packages:
            - setproctitle
        build-packages:
            - coreutils
            - python3-requests
            - appmenu-gtk2-module
            - appmenu-gtk3-module
        stage-packages:
            - coreutils
            - libssl-dev
            - libjpeg-dev
            - libtiff-dev
            - libsdl1.2-dev
            - libnotify-dev
            - freeglut3
            - ibus-gtk3
            - zlib1g
            - libsm6
            - libpulse0
            - libslang2
            - libsdl1.2debian
            - wmctrl
            - gir1.2-gtk-3.0
            - gir1.2-appindicator3-0.1
            - python3-gi
            - gir1.2-wnck-3.0
            - libcanberra-gtk-module
            - libcanberra-gtk3-module
            - x11-utils
            - python3-requests
            - python3-pyqt5
            - python3-pil
            - python3-pil.imagetk
            - appmenu-gtk2-module
            - appmenu-gtk3-module
            - libappindicator1
        requirements:
            - /root/project/requirements.txt

我的 requirements.txt 文件如下所示:

setuptools==57.0.0
image
psutil
pyqt5

我的目录结构是这样的,很简单:

mainfolder/
- main.py
- requirements.txt
- snap/
  - snapcraft.yaml

我还在 Snapcraft 论坛上发起了这个话题: https ://forum.snapcraft.io/t/how-do-i-make-my-tray-icon-display-in-ubuntu-budgie-in-my- pyqt5-app/26515

您可以就如何修复 Ubuntu Budgie 上丢失的图标提供任何帮助,我们将不胜感激!

标签: pythonpyqt5ubuntu-20.04trayiconsnapcraft

解决方案


推荐阅读