PyQt:在Windows中为我的程序执行"启动时启动"的最佳方法

ape*_*ari 5 python windows pyqt startup pyinstaller

我正在使用PyQt开发一个应用程序,在Windows中,如果在首选项中设置,应该能够在启动时启动.

我将PyInstaller作为单个可执行文件发布此软件; 我没有合适的"安装人员".

这是实现这一目标的最佳方式?(=在开机时开始)

一个可能的解决方案是在启动文件夹中添加一个链接,但我必须从软件中执行此操作:它可能吗?其他方法?

Startup文件夹有一个通用路径?我可以有一些权利问题吗?

ped*_*ech 7

尝试这个代码(它适用于py2exe):

import sys
from PyQt4.QtCore import QSettings
from PyQt4.QtGui import (QApplication, QWidget, QCheckBox, QPushButton,
                         QVBoxLayout)

RUN_PATH = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"

class MainWidget(QWidget):

    def __init__(self,parent=None):
        super(MainWidget, self).__init__(parent)
        self.settings = QSettings(RUN_PATH, QSettings.NativeFormat)
        self.setupUi()       
        # Check if value exists in registry
        self.checkbox.setChecked(self.settings.contains("MainWidget"))

    def setupUi(self):
        self.checkbox = QCheckBox("Boot at Startup", self)
        button = QPushButton("Close", self)
        button.clicked.connect(self.close)
        layout = QVBoxLayout(self)
        layout.addWidget(self.checkbox)
        layout.addWidget(button)

    def closeEvent(self, event):
        if self.checkbox.isChecked():
            self.settings.setValue("MainWidget",sys.argv[0]);
        else:
            self.settings.remove("MainWidget");
        event.accept()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWidget()
    w.show()
    app.exec_()
Run Code Online (Sandbox Code Playgroud)