-
-
Save hogelog/5338905 to your computer and use it in GitHub Desktop.
#!/usr/bin/python | |
# Import PySide classes | |
import sys | |
from PySide.QtCore import * | |
from PySide.QtGui import * | |
class App: | |
def __init__(self): | |
# Create a Qt application | |
self.app = QApplication(sys.argv) | |
icon = QIcon("jenkins_favicon.png") | |
menu = QMenu() | |
settingAction = menu.addAction("setting") | |
settingAction.triggered.connect(self.setting) | |
exitAction = menu.addAction("exit") | |
exitAction.triggered.connect(sys.exit) | |
self.tray = QSystemTrayIcon() | |
self.tray.setIcon(icon) | |
self.tray.setContextMenu(menu) | |
self.tray.show() | |
self.tray.setToolTip("unko!") | |
self.tray.showMessage("hoge", "moge") | |
self.tray.showMessage("fuga", "moge") | |
def run(self): | |
# Enter Qt application main loop | |
self.app.exec_() | |
sys.exit() | |
def setting(self): | |
self.dialog = QDialog() | |
self.dialog.setWindowTitle("Setting Dialog") | |
self.dialog.show() | |
if __name__ == "__main__": | |
app = App() | |
app.run() |
python ???
First of all, great working example, thank you for it.
Is there a way to keep the application running after activating QDialog? I'm trying to do something similar, but whenever i open a QDialog with some QInputDialogs and finish working on them, the QSystemTrayIcon does not respond to any further commands. Menu does not show with right click and i cannot close the application.
I'm having the same issue... Did you find a solution? (Using PyQt5 on macOS over here..)
First of all, great working example, thank you for it.
Is there a way to keep the application running after activating QDialog? I'm trying to do something similar, but whenever i open a QDialog with some QInputDialogs and finish working on them, the QSystemTrayIcon does not respond to any further commands. Menu does not show with right click and i cannot close the application.I'm having the same issue... Did you find a solution? (Using PyQt5 on macOS over here..)
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (QApplication, QMainWindow, QMenu, QSystemTrayIcon)
class App(QMainWindow):
def __init__(self, parent=None):
super(App, self).__init__(parent)
# Load UI from file
# uic.loadUi("app.ui", self)
# Or write your entire UI in code
self.setFixedSize(640, 480)
# SysTray Icon
self.tray = QSystemTrayIcon(self)
# Check if System supports STray icons
if self.tray.isSystemTrayAvailable():
self.tray.setIcon(self.windowIcon())
# Context Menu
ctmenu = QMenu()
actionshow = ctmenu.addAction("Show/Hide")
actionshow.triggered.connect(lambda: self.hide() if self.isVisible() else self.show())
actionquit = ctmenu.addAction("Quit")
actionquit.triggered.connect(self.close)
self.tray.setContextMenu(ctmenu)
self.tray.show()
else:
# Destroy unused var
self.tray = None
# Show App
self.show()
if __name__ == "__main__":
application = QApplication(sys.argv)
application.setApplicationName("App Name")
application.setApplicationVersion("1.1.1.1.1")
application.setOrganizationName("dev name")
win = App()
sys.exit(application.exec_())
More info:
This worked for me just replacing PyQt5
with PySide2
. This pops the icon up on the top menu bar on macOS. Related question: how do you set the application icon on the macOS dock?
Thank you. It works great.
First of all, great working example, thank you for it.
Is there a way to keep the application running after activating QDialog? I'm trying to do something similar, but whenever i open a QDialog with some QInputDialogs and finish working on them, the QSystemTrayIcon does not respond to any further commands. Menu does not show with right click and i cannot close the application.