前提・実現したいこと
GUI(PySide2)アプリケーションにおいて、多重起動を禁止したいです。また、タスクトレイに常駐するタイプのアプリケーションとなっていますので、メインウィンドウが開かれていない状態で多重起動された場合にはメインウィンドウを表示するようにしたいです。
アプリケーションが起動されているかプロセスを監視するなどの実装方法を思いつきましたが、一般的な実装方法であるのか不安なため、どのように実装するべきかお聞きしたく思い投稿させていただきました。
該当のソースコード
python3
1import sys 2from PySide2.QtWidgets import QAction, QMenu, QPushButton, QStyle, QSystemTrayIcon, QApplication, QMainWindow 3 4 5class MainWindow(QMainWindow): 6 def __init__(self): 7 super().__init__() 8 self.tray_icon_menu = QMenu(self) 9 self.tray_icon = QSystemTrayIcon(self) 10 self.action_open = QAction("&open", self) 11 self.action_quit = QAction("&quit", self) 12 self.tray_icon_menu.addAction(self.action_open) 13 self.tray_icon_menu.addAction(self.action_quit) 14 self.tray_icon.setContextMenu(self.tray_icon_menu) 15 self.tray_icon.setIcon(self.style().standardIcon(QStyle.SP_DialogOpenButton)) 16 17 self.action_open.triggered.connect(self.show) 18 self.action_quit.triggered.connect(QApplication.instance().quit) 19 self.tray_icon.show() 20 self.setCentralWidget(QPushButton("hello world")) 21 22 23app = QApplication(sys.argv) 24QApplication.setQuitOnLastWindowClosed(False) 25window = MainWindow() 26window.show() 27sys.exit(app.exec_())
試したこと
下記にQtSingleApplicationで実装する例を見つけましたが、参考コードが古く読み解くのが困難でした。
PySide2 (Qt fot Python) QtSingleApplicationでスタンドアロンアプリケーションの多重起動を防ぐ
https://rateionn.hatenablog.jp/entry/20190730/1564455600
補足情報(FW/ツールのバージョンなど)
- Windows10
- Python 3.7.9
- PySide2
- ビルドにはPyinstallerを使用
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/24 01:10