博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pyqt5 获取命令行参数sys.argv
阅读量:6941 次
发布时间:2019-06-27

本文共 3891 字,大约阅读时间需要 12 分钟。

大家有没有注意到,很多软件都能接收第三方应用触发命令行参数,根据参数打开想要的效果。

在windows任务管理器调取命令行列,我们同样能看到进程中有好多是带有参数的。

 

现在,我们用Pyqt5 (Py3.3)实现这样的效果

一. 先说说sys.argv

官方介绍

sys.argv

The list of command line arguments passed to a Python script. argv[0] is the script name (it is operating system dependent whether this is a full pathname or not). If the command was executed using the  command line option to the interpreter, argv[0] is set to the string '-c'. If no script name was passed to the Python interpreter, argv[0] is the empty string.

To loop over the standard input, or the list of files given on the command line, see the  module.

 

「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序。

这个变量其实是一个List列表,argv[0] 一般是被调用的脚本文件名或全路径,和操作系统有关,argv[1]和以后就是传入的数据了。参数从1开始

一般参数由空格分隔。

 

二. 实现Pyqt5 获取sys.argv 命令行参数

# -*- coding: utf-8 -*-# 直接运行, 提示请在命令行中运行, 运行参数, -install   -open=C:\document\apple.mp3    -color=red|green|yellowfrom PyQt5 import QtCore, QtGui, QtWidgetsimport sys, osimport subprocessclass class_cmds(QtWidgets.QWidget):    Cargv = QtCore.pyqtSignal(list)  # 定义一个带list参数的signal    def __init__(self, ):        super(class_cmds, self).__init__()        # 直接运行exe        if sys.argv.__len__() == 1:            self.dobexec()            sys.exit()        self.resize(100, 100)        self.setWindowFlags(QtCore.Qt.CustomizeWindowHint)  # 去掉windowHint        self.setWindowIcon(QtGui.QIcon('favicon.ico'))        self.Cargv.connect(self.dialogg)  # 触发信号后连接到一个槽dialogg        is_show_btn = ''        for arg in sys.argv:            if arg == '-install':                is_show_btn = '安装软件!'            color = arg.split('-color=')  # 设置背景颜色            if color.__len__() >= 2:                try:                    '''                    palette1 = QtGui.QPalette(self)                    palette1.setColor(QtGui.QPalette.Background, QtGui.QColor(192, 253, 123))  # 设置背景颜色                    self.setPalette(palette1)                    '''                    self.setStyleSheet('background-color:'+color[1])                except:                    pass            copen = arg.split('-open=')  # 打开一个文件            if copen.__len__() >= 2:                try:                    # subprocess.Popen(copen[1])  # 非阻塞, 可打开exe,但对于.mp3、xls、txt、pdf 无效                    os.system(str(copen[1]))                    pass                except:                    pass        if is_show_btn:            self.verticalLayout = QtWidgets.QVBoxLayout()            self.pushButton = QtWidgets.QPushButton(is_show_btn)            self.verticalLayout.addWidget(self.pushButton)            self.setLayout(self.verticalLayout)            self.pushButton.clicked.connect(self.ok)    def keyPressEvent(self, event):        if event.key() == QtCore.Qt.Key_Escape:            self.close()    def ok(self):        self.Cargv.emit(sys.argv)  # 发射一个信号    def dialogg(self, list):        QtWidgets.QMessageBox.about(self, '安装提示!', '可实行逻辑安装!' + list[0])    # 直接运行    def dobexec(self):        QtWidgets.QMessageBox.information(None, "运行提示!",                                          "

请在命令行中运行!运行参数包括:

" "

-install:开始安装软件

" "

-open=path:打开一个path的文件,如:-open=C:\\document\\apple.mp3

" "

-color:color 显示exe背景颜色, 其中color=( red|green|yellow )

")if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) myclass = class_cmds() myclass.show() sys.exit(app.exec_())

程序说明

直接运行我们让程序弹出一个MessageBox,提示在命令行中运行的命令参数

参数包括三个(-install      -open         -color)

-install 显示一个btn,表示可以触发btn下的逻辑,比如下载、安装等

-open  打开路径下的应用

-color  让程序显示自定义背景

当在命令行中带参数运行时就能看到每个参数对应的逻辑。

打包程序

PyInstaller: 3.0.dev6

if __name__ == '__main__':    from PyInstaller import __main__    params = ['-F', '-w', '--icon=favicon.ico', 'cmds.py']    __main__.run(params)

 

三. 运行效果

直接双击exe运行

 

在命令行中不带参数运行

 

命令行带-install 参数

点击btn

 

命令行带 -install 、 -color 参数

 

命令行带 -open 、 -color 参数

转载地址:http://rcfnl.baihongyu.com/

你可能感兴趣的文章
CentOS 7下启动postfix服务报错:fatal: parameter inet_interfaces: no local interface found for ::1...
查看>>
python测试开发django-6.模板中include使用
查看>>
博客园以后不再更新
查看>>
『流畅的Python』第13章:正确重载运算符
查看>>
Android 系统(64)---Android中m、mm、mmm、mma、mmma的区别【转】
查看>>
常用内存数据库介绍
查看>>
JSP基本面试的试题
查看>>
Handling Checkboxes, Radio Buttons and Select Options in jQuery [转]
查看>>
DD-WRT--让我们的无线路由器用上Linux
查看>>
《软件工程》大作业的想法和完成的过程
查看>>
一维最大子数组
查看>>
UTF-8编码的空格(194 160)问题
查看>>
PyQt4学习资料汇总 (转)
查看>>
在Salesforce中对某一个Object添加自定义的Button和Link
查看>>
linux mysql安装
查看>>
flex 右键连接
查看>>
js实践3_渐变应用
查看>>
5月8--我要发,一个值得纪念的日子
查看>>
Java之命令模式(Command Pattern)
查看>>
dom4j 的小小测试
查看>>