PyQt5 set qt_ntfs_permission_lookup



我想使用QFileInfo中的isWritable()。根据文档,您必须以某种方式将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创建了轮子,所以从这里下载,提取.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()

相关内容

  • 没有找到相关文章

最新更新