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

news/2024/10/20 11:10:04/

QkStart

我把这个程序命名为QkStart

代码

python"># -*- 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.ppmy.cn/news/1540501.html

相关文章

fread和imread不同(imread读取的是图像的像素矩阵,fread会有别的信息)

clear;clc; fid fopen(草原HH极化图像.png,rb); B fread(fid,uint8); % % unit8是0——255,所以要保存图像,要先把矩阵归一化,然后再乘255 % height 1600; % width 2000; % img_matrix reshape(B(1:width*height), [height, width]); i…

C#中委托的应用与示例

委托 委托是指把事情托付给别人或别的机构办理。在C#语言中委托是一种特殊类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。委托是具有特定参数列表和返回类型的方法的引用的类型(不是引用对象,而是引用方法)。 可以委托将看作一个包含有序方法列表…

Redis 高可用:从主从到集群的全面解析

目录 一、主从复制 (基础)1. 同步复制a. 全量数据同步b. 增量数据同步c. 可能带来的数据不一致 2. 环形缓冲区a. 动态调整槽位 3. runid4. 主从复制解决单点故障a. 单点故障b. 可用性问题 5. 注意事项a. Replica 主动向 Master 建立连接b. Replica 主动向 Master 拉取数据 二、…

香港举办AIHCIR 2024国际学术会议,领先人工智能、人机交互和机器人技术

第三届人工智能、人机交互和机器人国际学术会议 (AIHCIR 2024)将于2024年11月在中国香港举行,聚焦AI、人机交互与机器人领域,邀请知名学者演讲,促进学术交流。论文经评审后提交EI检索,投稿需全英文&#xf…

wifi、热点密码破解 - python

乐子脚本,有点小慢,试过多线程,系统 wifi 连接太慢了,需要时间确认,多线程的话系统根本反应不过来。 也就可以试试破解别人的热点,一般都是 123456 这样的傻鸟口令 # coding:utf-8 import pywifi from pyw…

XPM_CDC_SYNC_RST

免责声明:本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济…

从零开始:使用 Flask 或 Django 构建 RESTful API

引言 在当今这个数据驱动的时代,构建高效、可扩展的后端服务变得尤为重要。RESTful API 作为一种设计模式,已经成为现代 Web 开发的标准之一。无论是小型初创公司还是大型企业,都需要一个强大的后端来支持前端应用的快速迭代和用户需求的变化…

DNS安全检测与防护策略

DNS在互联网基础服务中,负责将域名转换为IP地址,但是随网络的演变,DNS系统面临安全方面的威胁也有增多,比如DNS劫持、缓存中毒、域名欺骗等。 ※为什么要看重DNS的安全检测? 因为DNS一旦遭受攻击,将直接影…