class SystemTrayIcon(QSystemTrayIcon): def __init__(self, main_window): QSystemTrayIcon.__init__(self) self.main_window = main_window self.setIcon(QIcon(LOGO_PADDED_PATH)) self.initialize_context_menu() def initialize_context_menu(self): self.menu = QMenu() self.version_action = self.menu.addAction(f"Version {__version__}") self.version_action.setEnabled(False) self.menu.addSeparator() self.open_action = self.menu.addAction("Open Control Panel", self.show_main_window) self.restore_action = self.menu.addAction( "Restore Files", self.main_window.open_restore_files) self.settings_action = self.menu.addAction( "Settings", self.main_window.open_settings) self.help_action = self.menu.addAction( "Help", lambda: webbrowser.open(SUPPORT_URL)) self.quit_action = self.menu.addAction( "Quit", self.main_window.quit_application) self.setContextMenu(self.menu) def show_main_window(self): self.main_window.show() self.main_window.activateWindow() self.main_window.raise_()
def contextMenuEvent(self, event): """A simple context menu for managing images.""" context_menu = QMenu(self) # Create menu instance context_menu.addAction(self.parent.sort_ascend_act) context_menu.addAction(self.parent.sort_descend_act) context_menu.addSeparator() context_menu.addAction(self.parent.delete_act) context_menu.exec(self.mapToGlobal(event.pos()))
class WindowCpu(QSystemTrayIcon): def __init__(self): super().__init__() self.menu = QMenu() self.usage = QAction() self.usage.setText("Initialised") self.menu.addAction(self.usage) self.version = QAction("Notifier ({})".format(__version__)) self.version.setDisabled(True) self.menu.addAction(self.version) self.menu.addSeparator() self.menu.addAction("Quit", lambda: exit(0)) self.setContextMenu(self.menu) self.setIcon(QIcon("icons/0.svg")) self.show() self.task = TaskCpu() self.task.start() self.task.on_cpu_changed.connect( lambda value: self.set_icon(value)) # noqa def set_icon(self, value): """ initial == 0 white [0-25) == 1 blue [25-50) == 2 green [50-75) == 3 yellow [75-100) == 4 orange [100-) == 5 red :param value: :return: """ if 0 <= value < 25: icon = 1 elif 25 <= value < 50: icon = 2 elif 50 <= value < 75: icon = 3 elif 75 <= value < 100: icon = 4 else: icon = 5 self.usage.setText("Usage % {}".format(value)) self.setIcon(QIcon("icons/{}.svg".format(icon)))
def contextMenuEvent(self, event): """Add actions to right click menu, dependent on currently active table """ child = self.childAt(event.pos()) menu = QMenu(self) # menu.setToolTipsVisible(True) table_widget = self.active_table_widget() for section in table_widget.context_actions.values(): for action in section: name_action = f'act_{action}' try: menu.addAction(getattr(self, name_action)) except Exception as e: try: menu.addAction(getattr(table_widget, name_action)) except Exception as e: log.warning( f'Couldn\'t add action to context menu: {action}') menu.addSeparator() action = menu.exec(self.mapToGlobal(event.pos()))