我开发了一个带有系统托盘的应用程序,其中包含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)
因此得出的理解是,问题不在于路径,而在于其他问题。
答案 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