使用固定的内部命令参数运行脚本以包含 Qwebengine pepflashplayer

Posted

技术标签:

【中文标题】使用固定的内部命令参数运行脚本以包含 Qwebengine pepflashplayer【英文标题】:Running script with fixed internal commands arguments to include Qwebengine pepflashplayer 【发布时间】:2017-12-07 21:00:19 【问题描述】:

我制作了一个 PyQt5 QWebengine 应用程序,我想使其便携。 我发现闪光灯在应用程序中不起作用。 经过大量阅读后,我发现out 文件夹中有 pepflashplayer64_*.dll 和 manifest.json

C:\Windows\System32\Macromed\Flash\ 正在运行。

但是我想将 pepflashplayer 与应用程序一起发布,并且 将自定义 flash 文件夹添加到 PATH env var,没有效果,或者 sys.path.insert()

命令

myapp.py --ppapi-flash-path=C:\Flash\pepflashplayer64_27_0_0_187.dll

有效,但是如何在脚本启动时在内部传递额外的增强?

我尝试了用额外的命令运行 sys.arg[0] 脚本但没有成功。

if __name__ == "__main__":
    # print sys.argv
    flash = (' --ppapi-flash-path=C:\Flash\pepflashplayer64_27_0_0_187.dll').split()
    # print flash
    noooo =  (sys.argv[0] + flash[0]).split()  
    import sys
    app = QtWidgets.QApplication(noooo)
    # ... the rest of your handling: `sys.exit(app.exec_())`, etc.

【问题讨论】:

QtWidgets.QApplication 采取什么样的论据?你能总结一下它的文档吗? 等 "进入主事件循环并等待直到调用 exit(),然后返回设置为 exit() 的值(如果通过 quit() 调用 exit(),则返回 0 )。必须调用此函数来启动事件处理。主事件循环从窗口系统接收事件并将这些事件分派给应用程序小部件。" 我基本上想设置一个内部 sys.argv[1],而不需要通过命令行输入最后一个参数。 【参考方案1】:

好的,我让它工作了,所以我可以通过浏览器使应用程序成为可移植的应用程序,并且解决方案比我想象的要简单。 像这样解析第二个内部参数。

if __name__ == "__main__":
    programname = os.path.dirname(sys.argv[0]) #get current script full folder path
    pepperpflash = ' --ppapi-flash-path=' + programname + '/Flash/pepflashplayer64_27_0_0_187.dll' 
    try:
        app = QtWidgets.QApplication(sys.argv + [pepperpflash])
    except:
        app = QtWidgets.QApplication(sys.argv)
    # ... the rest of your handling: `sys.exit(app.exec_())`, etc.

【讨论】:

以上是关于使用固定的内部命令参数运行脚本以包含 Qwebengine pepflashplayer的主要内容,如果未能解决你的问题,请参考以下文章

使用空格指定参数以运行 python 脚本

函数内部 sed 命令中的 bash 语法错误,在命令行上工作正常

将awk脚本写在文件里:一种高效的awk循环循环方式

PowerShell 添加任务以使用参数运行 PowerShell 脚本

shell脚本基础----变量

Bash基础——Shell脚本内部常用环境变量