小编Fla*_*ace的帖子

Qt和PyQt混合应用程序

我有一个使用Qt的用于UI的C++应用程序,我目前正在实现python绑定,以便应用程序更易于为其用户编写脚本.我还希望人们能够在PyQt中编写自己的自定义小部件,并通过boost :: python绑定访问核心功能.

为此,我想允许信号从PyQt小部件连接到Qt小部件,反之亦然,所以我需要以某种方式将PyQt父级化到Qt.我听说它可以做到,但经过一些搜索后找不到任何例子.

有没有人有这种东西的参考?

c++ python qt pyqt boost-python

5
推荐指数
1
解决办法
767
查看次数

为什么 std::unique_ptr 有一个相等运算符?

我最近一直在考虑它,我能看到的关于 std::unique_ptr 具有相等运算符的唯一参数是为了完整性,因此标准模板库中的所有智能指针都有它。但是,除非您做错了什么,否则我看不到任何可能返回的示例true

显然可以执行以下操作:

int* a = new int(1);
std::unique_ptr<int> u_a1(a);
std::unique_ptr<int> u_a2(a);

if(u_a1 == u_a2)
{
    std::cout << "I'm double deleting soon" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

但是,包含运算符是否只是允许人们在编译器不抛出错误的情况下犯此类错误?删除它不是更有意义,还是我错过了什么?

c++ smart-pointers unique-ptr comparison-operators c++11

5
推荐指数
1
解决办法
240
查看次数

boost::python 中静态属性的文档字符串

我已经为我的 c++ 应用程序的核心功能添加了 python 绑定,现在我正在尝试在各处添加文档字符串,以便我可以使用 sphinx 自动记录公开的 python。

它几乎可以工作,但是当我有静态属性(使用 add_static_property 方法添加)时,我无法覆盖文档字符串。我的一个返回浮点数的属性就是一个例子:

MyClass.static_property.__doc__
float(x) -> floating point number
Run Code Online (Sandbox Code Playgroud)

当我使用 def 方法或 property 方法时,最后一个参数允许我添加我的文档字符串。有谁知道为什么不能对静态属性执行此操作?有什么办法允许他们这样做吗?

非常感谢

c++ boost-python

2
推荐指数
1
解决办法
1389
查看次数

从另一个没有重复的确定性 int 生成

我正在创建一个确定性数字生成函数,其中输入数字将始终生成相同的数字,但没有两个数字最终会生成相同的结果。

例如:

1 -> 3
2 -> 5
3 -> 4
4 -> 2
5 -> 1
Run Code Online (Sandbox Code Playgroud)

但是,我需要它适用于可以由特定数据类型(例如 int64)表示的所有数字。

这感觉要么是非常简单的事情,要么是完全不可能的事情。是否有某种随机数生成方案可以保证这种分布,而无需我创建所有可能数字的数组,随机排序,然后使用索引(同时使我耗尽内存)?

非常感谢F

random go random-seed

2
推荐指数
1
解决办法
559
查看次数

延迟加载模块在__init__.py文件python中导入

我想知道是否有人对init文件中的延迟加载导入有任何建议?我目前有以下文件夹结构:

/mypackage
    __init__.py
    /core
        __init__.py
        mymodule.py
        mymodule2.py
Run Code Online (Sandbox Code Playgroud)

核心文件夹中的init .py文件,包含以下导入:

from mymodule import MyModule
from mymodule2 import MyModule2
Run Code Online (Sandbox Code Playgroud)

这样我就可以这样做:

from mypackage.core import MyModule, MyModule2
Run Code Online (Sandbox Code Playgroud)

但是,在init .py文件包中,我有另一个导入:

from core.exc import MyModuleException
Run Code Online (Sandbox Code Playgroud)

这导致每当我在python中导入我的包时,MyModule和MyModule2默认导入,因为核心init .py文件已经运行.

我想要做的是,只有在运行以下代码时才导入这些模块,而不是之前:

from mypackage.core import MyModule, MyModule2
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

非常感谢.

python import lazy-loading

1
推荐指数
1
解决办法
2831
查看次数