作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 PyQt4 中设置应用程序的任务栏图标?
我尝试过 setWindowIcon,它成功地设置了主窗口左上角的图标,但它不会影响 Windows 7 任务栏中显示的图标——任务栏图标仍然是默认的 Python pyw 图标。这是我的代码:
from PyQt4 import QtGui
app = QtGui.QApplication([])
mainwindow = QtGui.QMainWindow()
mainwindow.show()
app.setWindowIcon(QtGui.QIcon('chalk.ico'))
mainwindow.setWindowIcon(QtGui.QIcon('chalk.ico'))
app.exec_()
setWindowIcon()
之前
show()
.我已经尝试过使用其他图像、ico 和 png。没有任何帮助。
最佳答案
经过一番挖掘,我找到了答案。
在 Windows 7 中,任务栏本身不是用于“应用程序窗口”,而是用于“应用程序用户模型”。例如,如果您的应用程序有多个不同的实例在运行,并且每个实例都有自己的图标,那么它们都将被分组到一个任务栏图标下。 Windows 使用各种启发式方法来决定是否应该对不同的实例进行分组,在这种情况下,它决定将 Pythonw.exe 托管的所有内容都分组到 Pythonw.exe 的图标下。
正确的解决方案是让 Pythonw.exe 告诉 Windows 它只是托管其他应用程序。也许 future 的 Python 版本会做到这一点。或者,您可以添加一个注册表项来告诉 Windows Pythonw.exe 只是一个主机,而不是一个应用程序本身。参见 AppUserModelIDs 的 MSDN 文档.
或者,您可以使用来自 Python 的 Windows 调用,明确告诉 Windows 此进程的正确 AppUserModelID 是什么:
import ctypes
myappid = 'mycompany.myproduct.subproduct.version' # arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
关于qt - 如何在 Windows 7 中设置应用程序的任务栏图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1551605/
我是一名优秀的程序员,十分优秀!