feat: 完成PyQt5 GUI实现,支持系统托盘和图标显示
1. 实现了基于PyQt5的GUI界面 2. 添加系统托盘功能,支持最小化到托盘 3. 修复了图标显示问题,包括窗口图标和任务栏图标 4. 优化了打包配置,支持PyInstaller打包 5. 版本更新到v3.3.1
This commit is contained in:
@@ -5,7 +5,7 @@ import os
|
||||
from PIL import Image
|
||||
from PyQt5.QtWidgets import (QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
|
||||
QLabel, QLineEdit, QPushButton, QFrame, QTextEdit,
|
||||
QMessageBox, QApplication)
|
||||
QMessageBox, QApplication, QSystemTrayIcon, QMenu)
|
||||
from PyQt5.QtCore import Qt, QTimer
|
||||
from PyQt5.QtGui import QIcon, QPixmap
|
||||
|
||||
@@ -34,17 +34,34 @@ class MainWindow(QMainWindow):
|
||||
self.setWindowTitle(f"听泉Cursor助手 v{version} (本机Cursor版本: {cursor_version})")
|
||||
self.setMinimumSize(600, 500)
|
||||
|
||||
# 设置图标
|
||||
try:
|
||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
icon_path = os.path.join(os.path.dirname(current_dir), "icon", "th.jpg")
|
||||
if os.path.exists(icon_path):
|
||||
self.setWindowIcon(QIcon(icon_path))
|
||||
logging.info(f"成功加载图标: {icon_path}")
|
||||
else:
|
||||
logging.error(f"图标文件不存在: {icon_path}")
|
||||
except Exception as e:
|
||||
logging.error(f"设置图标失败: {str(e)}")
|
||||
# 设置窗口图标
|
||||
icon_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "icon", "two.ico")
|
||||
if os.path.exists(icon_path):
|
||||
window_icon = QIcon(icon_path)
|
||||
if not window_icon.isNull():
|
||||
self.setWindowIcon(window_icon)
|
||||
logging.info(f"成功设置窗口图标: {icon_path}")
|
||||
|
||||
# 创建系统托盘图标
|
||||
self.tray_icon = QSystemTrayIcon(self)
|
||||
self.tray_icon.setIcon(self.windowIcon())
|
||||
self.tray_icon.setToolTip("听泉Cursor助手")
|
||||
|
||||
# 创建托盘菜单
|
||||
tray_menu = QMenu()
|
||||
show_action = tray_menu.addAction("显示主窗口")
|
||||
show_action.triggered.connect(self.show)
|
||||
quit_action = tray_menu.addAction("退出")
|
||||
quit_action.triggered.connect(QApplication.instance().quit)
|
||||
|
||||
# 设置托盘菜单
|
||||
self.tray_icon.setContextMenu(tray_menu)
|
||||
|
||||
# 连接托盘图标的信号
|
||||
self.tray_icon.activated.connect(self.on_tray_icon_activated)
|
||||
|
||||
# 显示托盘图标
|
||||
self.tray_icon.show()
|
||||
|
||||
# 创建主窗口部件
|
||||
central_widget = QWidget()
|
||||
@@ -107,6 +124,26 @@ class MainWindow(QMainWindow):
|
||||
# 启动时检查一次状态
|
||||
QTimer.singleShot(0, self.check_status)
|
||||
|
||||
def on_tray_icon_activated(self, reason):
|
||||
"""处理托盘图标的点击事件"""
|
||||
if reason == QSystemTrayIcon.DoubleClick:
|
||||
self.show()
|
||||
self.activateWindow()
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""重写关闭事件,最小化到托盘而不是退出"""
|
||||
if hasattr(self, 'tray_icon') and self.tray_icon.isVisible():
|
||||
event.ignore()
|
||||
self.hide()
|
||||
self.tray_icon.showMessage(
|
||||
"听泉Cursor助手",
|
||||
"程序已最小化到系统托盘",
|
||||
QSystemTrayIcon.Information,
|
||||
2000
|
||||
)
|
||||
else:
|
||||
event.accept()
|
||||
|
||||
def copy_device_id(self):
|
||||
"""复制设备ID到剪贴板"""
|
||||
if not self.check_status():
|
||||
|
||||
Reference in New Issue
Block a user