Ответ 1
Эта проблема вызвана некоторыми особенностями того, как иконки панели задач обрабатываются на платформе Windows.
Подробнее см. этот ответ, а также обходной путь с помощью ctypes
.
Я работаю над аппликацией в Python PyQt4 и не могу найти, как изменить значок панели задач. Я сделал свои .ui файлы в Qt Designer, где я могу изменить свойства windowIcon
. Но это не то, что я ищу. Я хочу изменить внешний вид значка приложения в панели задач Windows. Пока что это логотип Python в значке окна.
Я нашел информацию о SO: ссылка, но это не очень помогает мне.
Я пробовал:
app = QtGui.QApplication([])
app.setWindowIcon(QtGui.QIcon('chip_icon_normal.png'))
app.exec_()
Но значок остается неизменным.
Что я хочу изменить, показывая картинку: (Это делается при вызове setWindowIcon в главном окне/диалоге или приложении, как показано выше.)
Эта проблема вызвана некоторыми особенностями того, как иконки панели задач обрабатываются на платформе Windows.
Подробнее см. этот ответ, а также обходной путь с помощью ctypes
.
Мне кажется, что проблема может быть вызвана отсутствием значка с нужным размером. Следующая настройка работала для меня в PyQT4:
# set app icon
app_icon = QtGui.QIcon()
app_icon.addFile('gui/icons/16x16.png', QtCore.QSize(16,16))
app_icon.addFile('gui/icons/24x24.png', QtCore.QSize(24,24))
app_icon.addFile('gui/icons/32x32.png', QtCore.QSize(32,32))
app_icon.addFile('gui/icons/48x48.png', QtCore.QSize(48,48))
app_icon.addFile('gui/icons/256x256.png', QtCore.QSize(256,256))
app.setWindowIcon(app_icon)
У меня есть значок панели задач в Windows 7 и исправлены значки во всех окнах без каких-либо изменений в файлах ui.
Для меня следующий код работает как для изменения значка панели задач, так и для значка окна
win.setWindowIcon(QIcon('logo.png'))
Вам нужно вызвать setWindowIcon (...) в окне, а не в приложении.
Вот пример, который работает для меня:
#!/usr/bin/env python3
import os
import sys
import subprocess
import os.path
from PyQt4 import QtGui
from PyQt4 import QtCore
class MyWin(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWin, self).__init__(parent)
self.setWindowTitle("My Window")
self.setWindowIcon(QtGui.QIcon('test_icon.png'))
self.show()
def main(args):
app = QtGui.QApplication([])
ww= MyWin()
sys.exit(app.exec_())
if __name__ == '__main__':
main(sys.argv[1:])