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

我正在尝试从 PyQt 程序中打开特定文件夹。我知道我可以像这样使用网络浏览器模块


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?)。我不想打开文件或文件夹对话框,因为我只想打开该文件夹而不对其进行任何操作。另外,我想为将来在不同于 Windows 的操作系统上进行更新节省时间,因此我不必更改这部分。是否可以?。非常感谢


沧海一幻觉
浏览 163回答 2
2回答

江户川乱折腾

Qt 跨平台解决方案是使用QDesktopServices::openUrl():import osimport sysfrom PyQt5 import QtCore, QtGui, QtWidgetsapp = QtWidgets.QApplication(sys.argv)path = "C:/Users"fullpath = os.path.realpath(path)if not QtGui.QDesktopServices.openUrl(QtCore.QUrl.fromLocalFile(fullpath)):    print("failed")

牧羊人nacy

我设法使用 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)])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python