Значок указан, но отображается как белый значок в области уведомлений (python, Windows, приложение pyside2) на других машинах - PullRequest
0 голосов
/ 26 мая 2020

Я использовал QtDesigner для создания простого файла .ui и использовал pyside2-ui c для создания соответствующего файла python, который будет включен в основной файл. Это работает на моей машине разработки (установлена ​​Anaconda 2020-02; Python 3.7). На машине разработки (Windows 10) приложение имеет значок в правом верхнем углу, и оно отображается на панели задач с тем же значком. Это желаемое поведение.

Я пробовал скопировать мой каталог Anaconda3 (на другой компьютер Windows 10) и выполнить установку Anaconda3 с соответствующими дополнительными библиотеками на некоторых других машинах, но значок на панели задач отображается как пустой (белый) значок.

Есть мысли о том, почему это может происходить? Это работает в системе Linux (Ubuntu), где также работает Anaconda python с PySide2, поэтому мне интересно, какая настройка неверна.

Короткий пример:

import sys
from PySide2 import QtWidgets
from test_gui import Ui_MainWindow

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):


    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)

if __name__ == "__main__":
    print("Program start.")
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    app.exec_()

И включенный файл test_ gui .py:

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

# Form implementation generated from reading ui file 'test_gui.ui',
# licensing of 'test_gui.ui' applies.
#
# Created: Tue May 26 15:17:30 2020
#      by: pyside2-uic  running on PySide2 5.13.2
#
# WARNING! All changes made in this file will be lost!

from PySide2 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(292, 193)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("test_icon.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 292, 21))
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        self.menuAbout = QtWidgets.QMenu(self.menubar)
        self.menuAbout.setObjectName("menuAbout")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionOpen = QtWidgets.QAction(MainWindow)
        self.actionOpen.setObjectName("actionOpen")
        self.actionExit = QtWidgets.QAction(MainWindow)
        self.actionExit.setObjectName("actionExit")
        self.menuFile.addAction(self.actionOpen)
        self.menuFile.addAction(self.actionExit)
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuAbout.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "MainWindow", None, -1))
        self.menuFile.setTitle(QtWidgets.QApplication.translate("MainWindow", "File", None, -1))
        self.menuAbout.setTitle(QtWidgets.QApplication.translate("MainWindow", "About", None, -1))
        self.actionOpen.setText(QtWidgets.QApplication.translate("MainWindow", "Open", None, -1))
        self.actionExit.setText(QtWidgets.QApplication.translate("MainWindow", "Exit", None, -1))

Значок представляет собой небольшой файл JPG размером 32x32:

small_icon_32x32

Странно, как это работает на некоторых машинах, но не на других.

...