pyqt/pyside使用指定应用/软件打开指定文件

windows平台的处理

mac平台的虽然有写但未测试,不确定是否可用。linux平台未写。

windows思路:
1. 获取要打开的文件的绝对路径,我们以pdf文件为例
2. 首先定位到可执行程序(exe,msi)所在的位置,然后切换工作目录至可执行程序所在的位置。
3. 执行命令xxxxxx.exe D:\path\to\cccccc.pdf

mac思路:
1. open -a 软件路径 pdf文件路径
2. 使用python实现本命令

linux思路:
1. desktop文件
2. 看看文档

代码

    def openscorepdf(self):
    	# 使用dialog获取文件路径
        self.scorepdfpath, _ = QFileDialog.getOpenFileName(self, "选择你要上传的pdf文件", r"C:\\", "文件类型 (*.pdf)")
        # 如果路径不存在
        if not self.scorepdfpath:
            QMessageBox.warning(self, '没有文件', '您并未选择任何pdf文件')
        else:
        	# 提示信息
            QMessageBox.information(self, '提示', '请选择你希望打开pdf文件的应用')
            # 判断平台是否是Windows
            if str(sys.platform) == 'win32' or str(sys.platform) == 'win64':
            	# 选择打开文件要使用的软件
                openway, _ = QFileDialog.getOpenFileName(self, "请选择应用", r"C:\\", "(*.exe *.msi)")
                # windows处理方式
                path1 = os.path.dirname(os.path.abspath(openway))
                # 切换工作目录至exe程序所在目录
                os.chdir(path1)
                # 获取软件的名字
                path2 = str(openway).split('/')[-1]
                # 拼接命令,类似于:wps.exe D:\\path\to\aaa.pdf
                openorder = path2 + ' ' +  str(self.scorepdfpath)
                # 执行上面一行代码表示的命令
                os.system(openorder)
            # mac处理方式,这部分未测试,直觉告诉我肯定有问题O(∩_∩)O哈哈~,大伙自己改改,linux平台的处理代码未写,有时间了再搞。
            else:
                openway, _ = QFileDialog.getOpenFileName(self, "请选择应用", r"C:\\", "(*)")
                # 有没有sudo的区别在于要使用的软件是否需要root权限
                # openorder = 'sudo open -a ' + str(openway) + ' ' + str(self.scorepdfpath)
                openorder = 'open -a ' + str(openway) + ' ' + str(self.scorepdfpath)
                os.system(openorder)
                # # 方式二
                # openway, _ = QFileDialog.getOpenFileName(self, "请选择应用", r"C:\\", "(*)")
                # # # 开始到结束的这段内容,先注释掉,如果程序有问题,那个去掉注释,并且把最后一行(也就是结束后面的那行)注释掉
                # # # 开始
                # # path2 = str(openway).split('/')[-1]
                # # proname = path2.split('.')[0]
                # # subprocess.call(['open', '-a', proname, self.scorepdfpath])
                # # # 结束

如果大家有更好的想法,欢迎分享O(∩_∩)O哈哈~

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值