1

我在 Python 2.6.4 和 PyQt4 中开发了一个带有系统托盘的应用程序。

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

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

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

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)

因此,我们了解到问题不在于路径,而在于其他问题。

4

2 回答 2

0

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

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

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

os.chdir(base_dir)
于 2013-01-25T10:21:28.060 回答
0

我找到了针对这种情况的解决方案

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

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

我们将qt.config在 Take it 中找到一个文件\\somesystem\Share\PyQt4 并将其放入以下行qt.conf

[Paths]
Prefix = //somesystem/Share/PyQt4
Binaries = //somesystem/Share/PyQt4

一切正常,甚至会加载 sqldrivers。无需使用app.addLibraryPath

于 2013-01-28T10:45:48.610 回答