系统托盘图标+快捷启动(Python)

QkStart

我把这个程序命名为QkStart

代码

# -*- coding: utf-8 -*-
# Environment    PyCharm
# File_name   QkStart |User    Pfolg
# 2024/10/19 22:06
import threading
import time
import pystray
from PIL import Image
from pystray import MenuItem, Menu
import os
import psutil
# import webbrowser# pyinstaller -F -w -i QkStart.png QkStart.pywdefault_exe = {"ClickShow": r"D:\Little_Tools\Clickshow\ClickShow.exe","Steam++": r"D:\Program Files\Steam++\Steam++.exe",
}
links = {"海螺AI": "https://hailuoai.com/","carbon": "https://carbon.now.sh/",
}
choice_exe = {"PixPin": r"D:\Software\PixPin\PixPin\PixPin.exe","PowerToys": r"D:\Program Files (x86)\PowerToys\PowerToys.exe","LANDrop": r"C:\Users\21460\AppData\Local\Programs\landrop-v2-electron\LANDrop.exe","KeyCastOW": r"D:\Little_Tools\KeyCastOW\KeyCastOW.exe","geek": r"D:\Little_Tools\geek.exe","FDM": r"D:\Program Files\Softdeluxe\Free Download Manager\fdm.exe",
}
all_target = {}  # 整合字典
for i in [default_exe, links, choice_exe]:for j, k in i.items():all_target[j] = kdef open_exe(icon, item):  # 使用类的默认传参来传递参数,然后检索程序并执行try:os.startfile(all_target.get(item.text))except OSError:icon.notify("{0}启动失败".format(item.text), "OSError")def open_link(icon, item):os.system("start {}".format(all_target.get(item.text)))# webbrowser.open_new_tab(all_target.get(item.text))  # 减少模块使用picture = r".\QkStart.png"menu = []# for i in [default_exe, links, choice_exe]:
#     for key, value in i.items():
#         menu.append(MenuItem(text=key, action=lambda v=value: open_exe(exe=v)))  # 在 lambda 函数内部定义一个局部变量来存储当前的 value 值
#     menu.append(Menu.SEPARATOR)
# menu.append(MenuItem(text='退出', action=lambda: icon.stop()))for key in default_exe:menu.append(MenuItem(text=key, action=open_exe))
menu.append(Menu.SEPARATOR)
for key in links:menu.append(MenuItem(text=key, action=open_link))
menu.append(Menu.SEPARATOR)
for key in choice_exe:menu.append(MenuItem(text=key, action=open_exe))
menu.append(Menu.SEPARATOR)
menu.append(MenuItem(text='退出', action=lambda: icon.stop()))# "原方法"
# menu = (MenuItem(text='ClickShow', action=lambda: open_exe(r"D:\Little_Tools\Clickshow\ClickShow.exe")),
#         MenuItem(text='Steam++', action=lambda: open_exe(r"D:\Program Files\Steam++\Steam++.exe")),
#         # MenuItem(text='菜单3', action=, enabled=False),
#         Menu.SEPARATOR,
#         MenuItem(text="海螺AI", action=lambda: open_link("https://hailuoai.com/")),
#         MenuItem(text="carbon", action=lambda: open_link("https://carbon.now.sh/")),
#         Menu.SEPARATOR,
#         MenuItem(text='PixPin', action=lambda: open_exe(r"D:\Software\PixPin\PixPin\PixPin.exe")),
#         MenuItem(text="PowerToys", action=lambda: open_exe(r"D:\Program Files (x86)\PowerToys\PowerToys.exe")),
#         MenuItem(text="LANDrop", action=lambda: open_exe(
#             r"C:\Users\21460\AppData\Local\Programs\landrop-v2-electron\LANDrop.exe")),
#         MenuItem(text="KeyCastOW", action=lambda: open_exe(r"D:\Little_Tools\KeyCastOW\KeyCastOW.exe")),
#         MenuItem(text="geek", action=lambda: open_exe(r"D:\Little_Tools\geek.exe")),
#         MenuItem(text="FDM", action=lambda: open_exe(r"D:\Program Files\Softdeluxe\Free Download Manager\fdm.exe")),
#         # MenuItem(text='我是点击图标的菜单', action=, default=True, visible=False),
#         Menu.SEPARATOR,
#         MenuItem(text='退出', action=on_exit),
#         )
def auto_run():battery = psutil.sensors_battery()plugged = battery.power_pluggedif plugged:time.sleep(60)for exe in default_exe:os.startfile(default_exe.get(exe))time.sleep(3)if __name__ == '__main__':threading.Thread(target=auto_run).start()image = Image.open(picture)icon = pystray.Icon("QkStart", image, "快速启动应用", menu)icon.run()

🤓👆🏼

传递参数那块儿还是花了我一点时间的,结果是程序对内存的要求更高了

能干嘛

不会吹牛,就是简单的实现一下运行并自启动一些程序,如果把它放到startup文件夹里面就能实现开机自启(程序)了,它会在系统托盘处创建一个自己的图标,并自带一些功能

系统托盘:

自带的功能:

这个可以在代码里进行修改,只需要改一下字典里面的key和value就可以了 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/882393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode.204.计数质数

#中等#枚举 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 埃氏筛 枚举没有考虑到数与数的关联性,因此难以再继续优化时间复杂度。接下来我们介绍一个常见的算法,该算法由希腊数学家厄拉多塞(Eratosthenes)提…

文字跑马灯:实现文字自动滚动策略的原理分析

一. 背景 在前端开发中,不少网站和应用都会运用到动态效果来吸引用户的注意,并提升用户体验。文字跑马灯是一种常见的动态效果,通过文字不断滚动来展示内容,吸引用户的注意力。 最近的一个项目就需要实现文字跑马灯效果&#xf…

Chrome谷歌浏览器禁止空格下翻页但可以暂停和播放视频脚本js

前提 播放某些网站的视频的时候(不能网页全屏的视频) 会产生空格下翻页但是不能暂停播放视频,解决方案:下载油猴或者脚本猫把这代码填进去 (function() {use strict;document.body.onkeydown function(event) {var e window.event || event;// 检查是否按下空格…

【消息队列】RabbitMQ实现消费者组机制

目录 1. RabbitMQ 的 发布订阅模式 2. GRPC 服务间的实体同步 2.1 生产者服务 2.2 消费者服务 3. 可靠性 3.1 生产者丢失消息 3.2 消费者丢失消息 3.3 RabbitMQ 中间件丢失消息 1. RabbitMQ 的 发布订阅模式 https://www.rabbitmq.com/tutorials/tutorial-three-go P 生…

基于SpringBoot+Vue+uniapp微信小程序的乡村政务服务系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

【代码随想录Day45】动态规划Part13

647. 回文子串 题目链接/文章讲解:代码随想录 视频讲解:动态规划,字符串性质决定了 DP 数组的定义 | LeetCode:647.回文子串_哔哩哔哩_bilibili class Solution {public int countSubstrings(String s) {// 将字符串转换为字符数…

【软件测试】JUnit

Junit 是一个用于 Java 编程语言的单元测试框架,Selenium是自动化测试框架,专门用于Web测试 本篇博客介绍 Junit5 文章目录 Junit 使用语法注解参数执行顺序断言测试套件 Junit 使用 本篇博客使用 Idea集成开发环境 首先,创建新项目&#…

从零开始实现 C++ 双向链表:深入理解链表底层原理

文章目录 前言:1. 主要数据结构2. 迭代器的实现3. 链表的实现3.1 基本结构3.2 链表的插入与删除3.3 其他成员函数 4. 迭代器操作与遍历链表5. 拷贝构造与赋值运算符6. 总结 前言: 在 C 标准库中,std::list 是一种非常常用的数据结构&#xff…

VUE 仿神州租车-开放平台

项目背景: 神州租车是一家提供汽车租赁服务的公司,其API开放平台为开发者提供了访问神州租车相关服务和数据的接口。用VUE技术来仿照其开发平台。 成果展示: 首页: API文档: 关于我们:

牛只行为及种类识别数据集18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。数据集中包括牛只行走,站立,进食,饮水等不同类型的数据

18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。 数据集中包括牛只行走,站立,进食,饮水等不同类型的数据,可以用于行为检测 数据集中包含多种不同种类的牛只&#xff…

黑盒测试 | 挖掘.NET程序中的反序列化漏洞

通过不安全反序列化漏洞远程执行代码 今天,我将回顾 OWASP 的十大漏洞之一:不安全反序列化,重点是 .NET 应用程序上反序列化漏洞的利用。 📝$ _序列化_与_反序列化 序列化是将数据对象转换为字节流的过程,字节流可以…

从底层结构开始学习FPGA(15)----时钟结构(通俗版)

目录 0、前言 1、IO Bank和Clock Region(时钟区域)是一个东西吗? 2、时钟输入管脚 3、时钟架构 3.1、全局时钟BUFG 3.2、水平时钟BUFH 3.3、IO时钟BUFIO 3.4、区域时钟BUFR/BUFMR 4、总结 《从底层结构开始学习FPGA》目录与传送门 0、前言 我思来想去,总觉…

基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…

Maxwell 底层原理 详解

Maxwell 是一个 MySQL 数据库的增量数据捕获(CDC, Change Data Capture)工具,它通过读取 MySQL 的 binlog(Binary Log)来捕获数据变化,并将这些变化实时地发送到如 Kafka、Kinesis、RabbitMQ 或其他输出端。…

Java的重载和主要内存区

JAVA的重载 ​ 在Java中,重载(Overloading)是指在同一个类中可以定义多个同名的方法,但它们的参数列表必须不同。重载可以通过改变参数的数量、类型或者顺序来实现。重载提高了代码的可读性和灵活性。 JAVA重载要满足的条件&…

面经整理 八股 虾皮购物 Java后端开发 上

目录 1.java中的锁机制 什么是可重入锁 锁机制 可重入锁(Reentrant Lock) 特点: 示例代码: 总结 2.可重入锁的使用场景 1. 递归调用 2. 多线程资源共享 3. 复杂对象的状态管理 4. 保证顺序执行 总结 3.讲一下AQS AQ…

Lua表(Table)

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua中的表(table)是一种核心数据结构,它既是数组也是字典,能够存储多种类型的数据,包括数字、字符…

0x3D service

0x3D service 1. 概念2. Request message 数据格式3. Respone message 数据格式3.1 正响应格式3.2 negative respone codes(NRC)4. 示例4.1 正响应示例:4.2 NRC 示例1. 概念 UDS(统一诊断服务)中的0x3D服务,即Write Memory By Address(按地址写内存)服务,允许客户端向服…

Javaweb基础-axios

Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。 GET方法 get请求第一种写法 //后端 Slf4j RestController RequestMapping("/demo") public class DemoController {RequestMapping("/getTest")// 被RequestParam标记的参数…

mysql数据量分库分表

一、分库分表参考阈值 分库分表是解决大规模数据和高并发访问问题的常用策略。虽然没有绝对的阈值来决定何时进行分库分表,但以下是一些参考阈值和考虑因素,可以帮助你做出决策: 1.1 数据量阈值 单表数据行数:当单表的数据行数…