Linuxでシステムトレイにアイコン表示(qt/python)
前回までに、Linuxでシステムトレイにgtk&(C++/python)とqt&C++を使ってアイコン表示をしてみました。
今回はqt&pythonで同じことをしてみます。
実装
Qtの主要なpythonバインディングはPyQtとPySideの2つがあります。PyQtの方が実績がありますが、PySideにもいいところがあるらしく(詳しくない)、どちらがいいかは状況次第なようです。今回はPyQtで実装しています(いつも使ってる環境に入っていたので)。
import sys
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu, QAction
from PyQt5.QtGui import QIcon
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    menu = QMenu();
    exitAction = QAction("Exit", menu);
    menu.addAction(exitAction);
    oIcon = QIcon.fromTheme("virtualbox");
    trayIcon = QSystemTrayIcon(oIcon);
    trayIcon.activated.connect(lambda reason: menu.exec());
    exitAction.triggered.connect(lambda checked: app.quit());
    trayIcon.setContextMenu(menu);
    trayIcon.setVisible(True);
 
    exitCode = app.exec_()
    sys.exit(exitCode)
結果
見た目は同じなので省略します。
メモリ
Lubuntu-LXQtでは…
$ ps -eo uid,pid,rss,vsz,args | grep example
 1000  203934 50960 294764 python3 example.py
...
$ 
Neon-KDEでは…
$ ps -eo uid,pid,rss,vsz,args | grep example
 1000    1976 57996 305564 python3 example.py
...
$
51~58MBという結果でした。
まとめ
C++よりは16MB程度余計に消費するようです。およそGtkのときと似たような結果でした。
今までの全データをまとめると以下のとおりです。
| ディストリビューション | ツールキット | 言語 | 使用メモリ(RSS)[KB] | 
|---|---|---|---|
| Lubuntu 20.04 | Gtk3 | C++ | 21,908 | 
| Lubuntu 20.04 | Gtk3 | Python | 35,068 | 
| Lubuntu 20.04 | Qt5 | C++ | 34,576 | 
| Lubuntu 20.04 | Qt5 | Python | 50,960 | 
| KDE Neon User Edition(20.04) | Gtk3 | C++ | 44,488 | 
| KDE Neon User Edition(20.04) | Gtk3 | Python | 58,896 | 
| KDE Neon User Edition(20.04) | Qt5 | C++ | 41,684 | 
| KDE Neon User Edition(20.04) | Qt5 | Python | 57,996 | 
全般的にC++の方が13~16MBほどメモリ消費が少なく、ツールキットの違いはあるものの、ディストリビューションによる差が大きいので定性的にどちらが有利かは判断できない。


ディスカッション
コメント一覧
まだ、コメントがありません