在 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")
我正在尝试从我的 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")