PyQt5 иконка для приложения
Пытаюсь установить иконку для приложения (именно чтобы отображалась на панели задач, а не на окне приложения) всё ни как. Буду благодарен если поможете.
файл:
from PyQt5 import QtGui
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon('bug.ico'))
window = QtWidgets.QWidget()
window.setWindowIcon(QtGui.QIcon('bug.ico'))
window.show()
sys.exit(app.exec_())
картинка:
https://i.stack.imgur.com/BLBwO.png
Ответы (3 шт):
Поменяйте расширение с .ico на .png. Первое применяйте, когда будете сворачивать в исполняемый файл .exe.
немного корявенько, и не с полной заменой иконки, но к сожалению в ваших новоязах не силён
from PyQt5 import QtGui
from PyQt5 import QtWidgets
# нам понадобится модуль winextras
from PyQt5.QtWinExtras import QWinTaskbarButton,QWinTaskbarProgress
import sys
app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon('icon.ico'))
window = QtWidgets.QWidget()
window.setWindowIcon(QtGui.QIcon('icon.ico'))
window.show()
window.taskbar_button = QWinTaskbarButton()
# Это до кучи пример если в таскбаре надо показывать прогресс работы
#window.taskbar_progress = window.taskbar_button.progress()
#window.taskbar_progress.setRange(0, 100)
#window.taskbar_progress.setValue(50);
#window.taskbar_progress.show()
window.taskbar_button.setWindow(window.windowHandle())
window.taskbar_button.setOverlayIcon(QtGui.QIcon('icon.ico'))
sys.exit(app.exec_())
Если компонуете в exe, то можно задать иконку pyinstaller.exe --onefile --windowed --icon=icon.ico myapp.py
Когда вы запускаете приложение, Windows смотрит на исполняемый файл и пытается угадать,
к какой application group оно принадлежит.
По умолчанию все скрипты Python сгруппированы в одну и ту же группу "Python" , поэтому будет отображаться значок Python.
Чтобы это не происходило, нам нужно предоставить Windows другой идентификатор приложения.
Код ниже делает это, вызывая QtWin.setCurrentProcessExplicitAppUserModelID() с пользовательским идентификатором приложения.
import sys
from PyQt5 import QtGui
from PyQt5 import QtWidgets
try:
# Включите в блок try/except, если вы также нацелены на Mac/Linux
from PyQt5.QtWinExtras import QtWin # !!!
myappid = 'mycompany.myproduct.subproduct.version' # !!!
QtWin.setCurrentProcessExplicitAppUserModelID(myappid) # !!!
except ImportError:
pass
# .. или так .. # !!!
#import ctypes
#myappid = 'mycompany.myproduct.subproduct.version'
#ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon('BLBwO.png'))
window = QtWidgets.QWidget()
window.setWindowIcon(QtGui.QIcon('BLBwO.png'))
window.show()
sys.exit(app.exec_())

