PyQt中的图标无法正常显示

时间:2013-01-25 07:16:17

标签: python icons pyqt4 system-tray

我开发了一个带有系统托盘的应用程序,其中包含Python 2.6.4和PyQt4中的菜单。

每个客户端系统都在本地安装了python,并从网络位置访问PyQt4。

我为菜单项设置了SystemTray和必需的图标,如下所示。 应用程序文件夹中包含icons文件夹,我正在使用该文件夹。所以我使用了os.getcwd()

我将此app文件夹保存在网络中,以便每个人都可以访问。

self.mnuItem_1 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.ico' % (os.getcwd())), "Menu Item 1", self)
self.mnuItem_2 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.ico' % (os.getcwd())), "Menu Item 1", self)

self.trayIconMenu = QtGui.QMenu(self)
self.trayIconMenu.addAction(self.mnuItem_1)
self.trayIconMenu.addAction(self.mnuItem_2)
self.trayIcon = QtGui.QSystemTrayIcon(self)
self.trayIcon.setContextMenu(self.trayIconMenu)
TrayIcon = (r'%s\ShowTime_Addons\Media\showtimeIcon.ico' % (os.getcwd()))
self.trayIcon.setIcon(QtGui.QIcon(TrayIcon))
self.trayIcon.setToolTip('Showtime')
self.trayIcon.show()

在某些系统中,我可以看到图标,但在某些系统中,图标不会显示。

为了测试我放置.png并使用它并且它工作。

self.mnuItem_1 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.png' % (os.getcwd())), "Menu Item 1", self)
self.mnuItem_2 = QtGui.QAction(QtGui.QIcon(r'%s\icons\icon1.png' % (os.getcwd())), "Menu Item 1", self)

因此得出的理解是,问题不在于路径,而在于其他问题。

2 个答案:

答案 0 :(得分:0)

不确定这是否是解决方案,但请尽量不使用os.getcwd()来提供当前工作目录,它可能与您的应用程序目录不同。要确定应用程序目录,请使用:

base_dir = os.path.dirname(os.path.abspath(__file__))

然后使用base_dir代替os.getcwd()或执行:

os.chdir(base_dir)

答案 1 :(得分:0)

我找到了这个场景的解决方案

一种方法是在qt.config文件中设置路径并将其放在可执行文件的位置。(在我的例子中是C:\ Python26)

正如我在我的问题中所述,我从网络位置访问PyQt4时说\\somesystem\Share\PyQt4

我们会在qt.config中找到\\somesystem\Share\PyQt4个文件 把它放在qt.conf

的下面
[Paths]
Prefix = //somesystem/Share/PyQt4
Binaries = //somesystem/Share/PyQt4

一切正常,即使是sqldrivers也会加载。无需使用app.addLibraryPath