为了账号安全,请及时绑定邮箱和手机立即绑定

正确打开 Windows 资源管理器到 PyQt 中的特定路径

正确打开 Windows 资源管理器到 PyQt 中的特定路径

沧海一幻觉 2023-12-12 10:23:54
我正在尝试从 PyQt 程序中打开特定文件夹。我知道我可以像这样使用网络浏览器模块import webbrowser, ospath="C:/Users"webbrowser.open(os.path.realpath(path))或者我可以像这样使用 os.startfile 模块import ospath = "C:/Users"path = os.path.realpath(path)os.startfile(path)或 Qt 平台上不推荐的子进程。所以我想知道如何在 PyQt 上正确执行此操作(也许使用 QProcess?)。我不想打开文件或文件夹对话框,因为我只想打开该文件夹而不对其进行任何操作。另外,我想为将来在不同于 Windows 的操作系统上进行更新节省时间,因此我不必更改这部分。是否可以?。非常感谢
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

Qt 跨平台解决方案是使用QDesktopServices::openUrl()

import os

import sys


from PyQt5 import QtCore, QtGui, QtWidgets


app = QtWidgets.QApplication(sys.argv)


path = "C:/Users"

fullpath = os.path.realpath(path)


if not QtGui.QDesktopServices.openUrl(QtCore.QUrl.fromLocalFile(fullpath)):

    print("failed")


查看完整回答
反对 回复 2023-12-12
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

我设法使用 QProcess 在特定路径上打开资源管理器,而无需附加模块(例如网络浏览器)。我只需要平台模块来确定程序正在运行哪个平台,就像这样


    self.path = os.path.abspath(os.path.dirname(sys.argv[0]))

    self.pathOutput = os.path.join(self.path, "output")


def open_explorer(self):

    self._process = QtCore.QProcess(self)

    if platform.system() == "Windows":

        self._process.start("explorer",[os.path.realpath(self.pathOutput)])

    elif platform.system() == "Darwin":

        self._process.start("open",[os.path.realpath(self.pathOutput)])


查看完整回答
反对 回复 2023-12-12
  • 2 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信