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

このシナリオの解決策を見つけました

1つのアプローチは、ファイルにパスを設定し、qt.configこれを実行可能ファイルの場所に配置することです(私の場合はC:\ Python26)

私がネットワークロケーションからPyQt4にアクセスしているという質問で説明したように、\\somesystem\Share\PyQt4

Take itにqt.configファイルがあり、これを次の行に配置します。\\somesystem\Share\PyQt4qt.conf

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

すべてが正常に動作し、sqldriversもロードされます。使用する必要はありませんapp.addLibraryPath

于 2013-01-28T10:45:48.610 に答える