1

PyQt4 を使用してバックグラウンドで実行されるプログラムを作成しました。システム トレイ アイコンは別のスレッドで作成され、メイン プログラムを作成してトレイに配置した後、メイン プログラムと対話できます。Ubuntu 10.04でこれまで問題が発生したことはありません。ただし、最近Ubuntu 12.04にアップグレードしましたが、何らかの理由で、必要なQSystemTrayIconの痕跡さえありません。ここで何が起こっているのか、誰かが私に手がかりを与えることができますか? AskUbuntu と SO に関する私の質問に関する投稿を探しましたが、データベース内に私の問題に一致するものが見つからないようです。関連すると思われるコードの一部のみを含めましたが、必要に応じてさらに情報を提供します。

編集: Ubuntu でトレイ パネルのホワイト リストを既に変更し、に設定している['all']ので、問題ではないと特定できました。

関連するコード:

class notify(threading.Thread, QtGui.QSystemTrayIcon):
    def __init__(self, process, iconMain, iconNew, parent=None):
        threading.Thread.__init__(self)
        QtGui.QSystemTrayIcon.__init__(self, iconMain, parent)

        self.menu = QtGui.QMenu(parent)
        self.menuNew = QtGui.QMenu(parent)

        viewAdsAction = self.menu.addAction("View Ads")
        textModeAction = self.menu.addAction("Text-Mode")
        exitAction = self.menu.addAction("Exit")
        textModeActionNew = self.menuNew.addAction("PC-Mode")
        exitActionNew = self.menuNew.addAction("Exit")

        self.iconMain = iconMain
        self.iconNew = iconNew
        self.setContextMenu(self.menu)
        self.process = process
        self.textMode = False  

main() での実行:

def main():
    os.chdir(os.getenv("HOME") + "/.Phones")
    beginMain = mainProgram()
    beginMain.start()
    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()

    notifications = notify(beginMain, QtGui.QIcon("icon-58x58.xpm"), QtGui.QIcon("notify.xpm"), w)
    notifications.show()
    notifications.start()

    sys.exit(app.exec_())
4

1 に答える 1

1

問題を解決しましたが、解決策はゴミでした。どうやら Qt と Unity は特定の解像度に対応していないようです。私は 58x58 のスケーリングされたアイコンを実行していました。48x48 に縮小したところ、システム トレイ アイコンが表示され、プログラムで正しく動作するようになりました。

于 2013-03-10T03:23:20.623 に答える