web-dev-qa-db-ja.com

PyQt4はWindowsタスクバーアイコンを設定します

PythonのPyQt4でアプリケーションを作成していますが、タスクバーアイコンを変更する方法が見つかりません。 Qtのデザイナで.uiファイルを作成し、windowIconプロパティを変更できます。しかし、それは私が探しているものではありません。 Windowsタスクバーでアプリケーションのアイコンの外観を変更したい。今のところ、Pythonウィンドウアイコンのロゴ。

SOに関するいくつかの情報を見つけました: link ですが、それはあまり役に立ちません。

私が試しました:

app = QtGui.QApplication([])
app.setWindowIcon(QtGui.QIcon('chip_icon_normal.png'))
app.exec_()

ただし、アイコンは変更されません。

変更したい画像を表示:(上記のように、メインウィンドウ/ダイアログ、またはアプリケーションでsetWindowIconを呼び出して終了します。)

Taskbar icon change

25
Marko

この問題は、Windowsプラットフォームでのタスクバーアイコンの処理方法のいくつかの特性が原因で発生します。

ctypesを使用した回避策とともに、詳細については この回答 を参照してください。

19
ekhumoro

この問題は、適切なサイズのアイコンがないことが原因のようです。 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ファイルに変更を加えずにすべてのウィンドウにアイコンを修正しています。

11
Slawek Rewaj

私にとって、次のコードはタスクバーアイコンとウィンドウアイコンの両方を変更するために機能します

win.setWindowIcon(QIcon('logo.png'))
3
user6657441

アプリケーションではなくウィンドウで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:])
3
Jeremiah