PyQt5 集 qt_ntfs_permission_lookup
PyQt5 set qt_ntfs_permission_lookup
我想使用 QFileInfo 中的 isWritable()
。根据 docs,您必须以某种方式将 qt_ntfs_permission_lookup
设置为 1 才能在 Windows 上获得有意义的结果。 C++ 代码是
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
qt_ntfs_permission_lookup++; // turn checking on
qt_ntfs_permission_lookup--; // turn it off again
如何将 extern 语句“翻译”成 Python?
一种可能的解决方案是在 C++ 中创建更改该变量状态的函数并将其导出到 python。要将 C++ 函数导出到 python,可以使用 pybind11、SWIG、sip、shiboken2 等选项。
在这种情况下,使用 pybind11 实现一个小型库
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
namespace py = pybind11;
#ifdef Q_OS_WIN
QT_BEGIN_NAMESPACE
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
QT_END_NAMESPACE
#endif
PYBIND11_MODULE(qt_ntfs_permission, m) {
m.def("enable", [](){
#ifdef Q_OS_WIN
qt_ntfs_permission_lookup = 1;
#endif
});
m.def("disable", [](){
#ifdef Q_OS_WIN
qt_ntfs_permission_lookup = 0;
#endif
});
#ifdef VERSION_INFO
m.attr("__version__") = VERSION_INFO;
#else
m.attr("__version__") = "dev";
#endif
}
您可以按照以下步骤安装它:
要求:
- Qt5
- Visual Studio
- cmake
git clone https://github.com/eyllanesc/qt_ntfs_permission_lookup.git
python setup.py install
此外,在 github 操作的帮助下,我已经为某些版本的 Qt 和 python 创建了轮子,因此请从 here 下载它,解压 .whl 和 运行:
python -m pip install qt_ntfs_permission-0.1.0-cp38-cp38-win_amd64.whl
然后你运行它为:
from PyQt5.QtCore import QFileInfo
import qt_ntfs_permission
qt_ntfs_permission.enable()
qt_ntfs_permission.disable()
我想使用 QFileInfo 中的 isWritable()
。根据 docs,您必须以某种方式将 qt_ntfs_permission_lookup
设置为 1 才能在 Windows 上获得有意义的结果。 C++ 代码是
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
qt_ntfs_permission_lookup++; // turn checking on
qt_ntfs_permission_lookup--; // turn it off again
如何将 extern 语句“翻译”成 Python?
一种可能的解决方案是在 C++ 中创建更改该变量状态的函数并将其导出到 python。要将 C++ 函数导出到 python,可以使用 pybind11、SWIG、sip、shiboken2 等选项。
在这种情况下,使用 pybind11 实现一个小型库
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
namespace py = pybind11;
#ifdef Q_OS_WIN
QT_BEGIN_NAMESPACE
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
QT_END_NAMESPACE
#endif
PYBIND11_MODULE(qt_ntfs_permission, m) {
m.def("enable", [](){
#ifdef Q_OS_WIN
qt_ntfs_permission_lookup = 1;
#endif
});
m.def("disable", [](){
#ifdef Q_OS_WIN
qt_ntfs_permission_lookup = 0;
#endif
});
#ifdef VERSION_INFO
m.attr("__version__") = VERSION_INFO;
#else
m.attr("__version__") = "dev";
#endif
}
您可以按照以下步骤安装它:
要求:
- Qt5
- Visual Studio
- cmake
git clone https://github.com/eyllanesc/qt_ntfs_permission_lookup.git
python setup.py install
此外,在 github 操作的帮助下,我已经为某些版本的 Qt 和 python 创建了轮子,因此请从 here 下载它,解压 .whl 和 运行:
python -m pip install qt_ntfs_permission-0.1.0-cp38-cp38-win_amd64.whl
然后你运行它为:
from PyQt5.QtCore import QFileInfo
import qt_ntfs_permission
qt_ntfs_permission.enable()
qt_ntfs_permission.disable()