2015-08-16 462 views
2

我正在PySide中开发一个应用程序,我需要设置将显示在系统任务栏中的主应用程序图标。基本上我这样称呼它:app.setWindowIcon(图标)有时只能工作

app = QtGui.QApplication(sys.argv) 
app.setWindowIcon('appicon.png') 

在Windows上一切工作正常。但是,当我在Ubuntu上使用Python解释器python myapp.pyw运行它时,它有时会在任务栏中显示图标,有时不显示。这是不可预知的,但是我观察到,当图标正确显示时,它可能会正确显示,以便后续几次应用程序运行。如果显示不正确,则后续运行也可能失败。就好像它以某种方式被缓存或类似的东西。

在日志文件中,我可以看到png文件每次都加载得很好(即使在任务栏中未显示的情况下),我检查是否打印了icon.availableSizes()。我的图标是43x43像素(我想这不是任务栏中图标的大小),但我不知道它是否重要。

所以问题是如何让图标每次显示?

+1

闻起来像一个WM错误。 – peppe

回答

0

你应该在你的主窗口类的初始化函数setWindowIcon代替,就像这样:

.. 
self.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(":/path/to/image/image.png"))) 

,而不是在你的程序的主要功能(我认为这是你在做什么),即使它有时可能会有效。

+0

不,我不认为这是我的问题的原因。 'app.setWindowIcon('appicon.png')'我为没有指定图标的窗口设置默认窗口图标。然而,我尝试了你的建议,但没有成功。 –