正确打开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的操作系统上进行更新,所以我不必更改此部分。有可能吗?。非常感谢

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

我设法使用QProcess在特定路径上打开资源管理器,而不需要额外的模块(例如Web浏览器(。我只需要平台模块来确定程序运行的平台,比如这个

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

最新更新