Я использовал 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:
Странно, как это работает на некоторых машинах, но не на других.