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

Opening Windows Explorer to Specific Path in PyQt properly

我正在尝试从我的 PyQt 程序打开特定文件夹。我知道我可以使用 webbrowser 模块 像这样

import webbrowser, os
path="C:/Users"
webbrowser.open(os.path.realpath(path))

或者我可以像这样使用 os.startfile 模块

import os
path = "C:/Users"
path = os.path.realpath(path)
os.startfile(path)

或 Qt 平台不推荐的子进程。所以我想知道你怎么能在 PyQt 上正确地做到这一点(也许使用 QProcess?)。我不想打开文件或文件夹对话框,因为我只想打开文件夹而不对其进行任何操作。另外,我想为以后更新 OS 而不是 Windows 节省时间,所以我不必更改这部分。可能吗?。非常感谢

我设法使用 QProcess 在特定路径上打开资源管理器,而无需额外的模块(例如 webbrowser)。我只需要平台模块来判断程序是哪个平台运行,像这样

    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)])

Qt cross-platform 解决方案是使用 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")