From f44cec8c154e2c8a3806b689254e8f0d673f18b9 Mon Sep 17 00:00:00 2001 From: eKa Date: Wed, 19 Mar 2025 20:59:23 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=BA=D0=BE=D0=BD=D0=BA=D0=B0=20=D0=B2?= =?UTF-8?q?=20=D1=82=D1=80=D0=B5=D0=B5=20+=20=D1=81=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D1=83=D1=81=D0=B1=D0=B0=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WaaaghLampGUI.py | 52 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/WaaaghLampGUI.py b/WaaaghLampGUI.py index 38eb84f..394e0f6 100644 --- a/WaaaghLampGUI.py +++ b/WaaaghLampGUI.py @@ -6,8 +6,8 @@ import json # from PyQt6.QtCore import QLine from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QFrame, \ - QVBoxLayout, QWidget, QButtonGroup, QStatusBar, QComboBox -from PyQt6.QtGui import QPixmap, QIcon + QVBoxLayout, QWidget, QButtonGroup, QStatusBar, QComboBox, QMenu, QSystemTrayIcon +from PyQt6.QtGui import QPixmap, QIcon, QAction WAL_HOST = '10.0.1.11' WAL_PORT = 9000 @@ -191,7 +191,26 @@ class WaaaghLampGUI(QMainWindow): } self.setWindowTitle("WaaaghLamp GUI") - # self.setFixedSize(200, 100) + self.setFixedSize(250, 450) + + # Установка иконки в трей + self.tray_icon = QSystemTrayIcon(self) + self.tray_icon.setIcon(QIcon("res/waaagh_icon.png")) + self.tray_menu = QMenu() + self.tray_icon.activated.connect(self.showMaximized) + + # Создание действий для меню трея + minimize_action = QAction("Свернуть", self) + minimize_action.triggered.connect(self.showMinimized) + self.tray_menu.addAction(minimize_action) + + exit_action = QAction("Выход", self) + exit_action.triggered.connect(self.close) + self.tray_menu.addAction(exit_action) + + # Привязка меню к иконке трея + self.tray_icon.setContextMenu(self.tray_menu) + self.tray_icon.show() self.mode_button_group = QButtonGroup() self.status_bar = QStatusBar() @@ -226,7 +245,7 @@ class WaaaghLampGUI(QMainWindow): self.main_layout.addWidget(splitter3) self.exit_button = QPushButton("Exit") - self.exit_button.clicked.connect(self.exit) + self.exit_button.clicked.connect(self.close) self.main_layout.addWidget(self.exit_button) container = QWidget() @@ -269,6 +288,10 @@ class WaaaghLampGUI(QMainWindow): self.send_message(self.mode_button_group.checkedId(), PALLETE[self.pallete_list.currentText()]) def send_message(self, mode, color=0x000000): + def print_message(message): + print(message) + self.status_line.setText(message) + message = { "mode": mode, "color": color, @@ -280,13 +303,13 @@ class WaaaghLampGUI(QMainWindow): s.settimeout(5) s.send(json.dumps(message).encode('utf-8')) except Exception as e: - print(f"ERROR: {e}") + print_message(f"ERROR: {e}") data = "" try: data = s.recv(1024) except Exception as e: - print(f"ERROR: {e}") + print_message(f"ERROR: {e}") if data != "": try: @@ -294,21 +317,20 @@ class WaaaghLampGUI(QMainWindow): recieved_mode = self.state["mode"] recieved_color = self.state["color"] if recieved_mode == mode and recieved_color == color: - print(f"Mode {mode} with color {color} set successfully") + print_message(f"Mode {mode} with color {color}") else: - print(f"ERROR: Wrong answer from lamp") + print_message(f"ERROR: Wrong answer from lamp") except Exception as e: - print(f"ERROR: {e}") + print_message(f"ERROR: {e}") s.close() - def exit(self): + def close(self, event): print("Bye!") - exit(0) - + QApplication.quit() if __name__ == "__main__": app = QApplication(sys.argv) - window = WaaaghLampGUI() - window.show() - app.exec() + mainWindow = WaaaghLampGUI() + mainWindow.show() + sys.exit(app.exec())