给PyQt5 exe程序设置自启动(Windows)

给PyQt5 exe程序或者其他Python文件设置开机自启动(Windows)

1.前言

设置开机自启动其实是开机时用默认软件打开设置自启动的文件,如果是exe文件就相当于打开软件而已

2.安装 pywin32 库

由于是通过注册表的方式设置开机自启动,所以要用到 pywin32库,通过

pip list查询一下,

image-20200802152248708

如果没有安装就通过

pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装一下。


3.设置自启动

Autorun.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:mgboy time:2020/8/2

import win32api
import win32con, winreg, os, sys

"""判断键是否存在"""


def Judge_Key(key_name=None,
              reg_root=win32con.HKEY_CURRENT_USER,  # 根节点
              reg_path=r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",  # 键的路径
              abspath=None
              ):
    """
	:param key_name: #  要查询的键名
	:param reg_root: # 根节点
		#win32con.HKEY_CURRENT_USER
		#win32con.HKEY_CLASSES_ROOT
		#win32con.HKEY_CURRENT_USER
		#win32con.HKEY_LOCAL_MACHINE
		#win32con.HKEY_USERS
		#win32con.HKEY_CURRENT_CONFIG
	:param reg_path: #  键的路径
	:return:feedback是(0/1/2/3:存在/不存在/权限不足/报错)
	"""
    reg_flags = win32con.WRITE_OWNER | win32con.KEY_WOW64_64KEY | win32con.KEY_ALL_ACCESS
    try:
        key = winreg.OpenKey(reg_root, reg_path, 0, reg_flags)
        location, type = winreg.QueryValueEx(key, key_name)
        print("键存在", "location(数据):", location, "type:", type)
        feedback = 0
        if location != abspath:
            feedback = 1
            print('键存在,但程序位置发生改变')
    except FileNotFoundError as e:
        print("键不存在", e)
        feedback = 1
    except PermissionError as e:
        print("权限不足", e)
        feedback = 2
    except:
        print("Error")
        feedback = 3
    return feedback


"""开机自启动"""


def AutoRun(switch="open",  # 开:open # 关:close
            key_name=None,
            abspath=os.path.abspath(sys.argv[0])):
    # 如果没有自定义路径,就用os.path.abspath(sys.argv[0])获取主程序的路径,如果主程序已经打包成exe格式,就相当于获取exe文件的路径
    judge_key = Judge_Key(reg_root=win32con.HKEY_CURRENT_USER,
                          reg_path=r"Software\Microsoft\Windows\CurrentVersion\Run",  # 键的路径
                          key_name=key_name,
                          abspath=abspath)
    # 注册表项名
    KeyName = r'Software\Microsoft\Windows\CurrentVersion\Run'
    key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
    if switch == "open":
        # 异常处理
        try:
            if judge_key == 0:
                print("已经开启了,无需再开启")
            elif judge_key == 1:
                win32api.RegSetValueEx(key, key_name, 0, win32con.REG_SZ, abspath)
                win32api.RegCloseKey(key)
                print('开机自启动添加成功!')
        except:
            print('添加失败')
    elif switch == "close":
        try:
            if judge_key == 0:
                win32api.RegDeleteValue(key, key_name)  # 删除值
                win32api.RegCloseKey(key)
                print('成功删除键!')
            elif judge_key == 1:
                print("键不存在")
            elif judge_key == 2:
                print("权限不足")
            else:
                print("出现错误")
        except:
            print('删除失败')

测试

主程序:TestRun.py


# 引入自启动 py 文件
from Autorun import AutoRun


def check(state=1):
    """开机自启动函数"""
    if state == 1:
        AutoRun(switch='open', key_name='wallzoom')  # 键的名称应该起得特别一些,起码和已经存在的自启动软件名称不一致

    else:
        AutoRun(switch='close', key_name='wallzoom')

if __name__ == "__main__":
    check(state=1)

state=1开启自启动

image-20200802160518737

查看注册表,可以看到有wallzoom键值了

image-20200802160816949

state=0关闭自启动:

image-20200802160844134

4.PyQt5 应用说明

虽然我测试时没有涉及 PyQt5 程序,但道理是一致的,只有把Autorun.py文件放在主程序文件同目录下,再引用它,把开机自启动绑定一个checkBox按钮或其他信号槽函数就可以很好实现了 PyQt5 程序自启动了。

注意:如果没有打包成 exe 文件,在开机时只会用默认软件打开 py 文件而已

测试时没有涉及 PyQt5 程序,但道理是一致的,只有把Autorun.py文件放在主程序文件同目录下,再引用它,把开机自启动绑定一个checkBox按钮或其他信号槽函数就可以很好实现了 PyQt5 程序自启动了。

注意:如果没有打包成 exe 文件,在开机时只会用默认软件打开 py 文件而已
.
.

.
.

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Anaconda是一个流行的Python数据科学平台,它集成了Python解释器、常用的科学计算库和开发环境。PyQt是一个用于创建图形用户界面(GUI)的Python绑定库,它基于Qt开发框架。 要配置Anaconda以使用PyQt,首先需要确保已经安装了Anaconda。可以从Anaconda的官方网站下载合适版本的安装程序,并按照提示完成安装。 接下来,打开Anaconda的命令行界面。在Windows系统中,可以通过在开始菜单中搜索并打开"Anaconda Prompt"来进入命令行界面。在Mac或Linux系统中,可以打开终端并输入"conda"来进入命令行界面。 在命令行界面中,可以使用conda工具来管理Python环境和安装软件包。要安装PyQt,可以运行以下命令: conda install pyqt 这将会自动下载和安装PyQt以及其依赖项。安装完成后,可以通过运行以下命令来验证是否成功安装: python -c "import PyQt5" 如果没有报错,说明PyQt已经成功安装。 可以在Python脚本中使用PyQt来创建GUI应用程序。首先,需要导入必要的模块: from PyQt5.QtWidgets import QApplication, QMainWindow 然后,可以创建一个应用程序对象和一个主窗口对象: app = QApplication([]) window = QMainWindow() 接下来,可以设置主窗口的大小、标题等属性,并显示主窗口: window.setWindowTitle("My First PyQt App") window.resize(500, 300) window.show() 最后,使用app.exec_()来启动应用程序的事件循环,确保GUI的响应和交互正常运行: app.exec_() 这样,一个简单的使用PyQt的GUI应用程序就完成了。 综上所述,要配置Anaconda以使用PyQt,首先安装Anaconda,然后在Anaconda命令行界面中使用conda安装PyQt。最后,在Python脚本中导入PyQt模块,创建应用程序和主窗口对象,并调用app.exec_()来启动应用程序的事件循环。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值