我试图使用Python ctypes从苹果的CoreGraphics库创建CGRect
结构。在
CoreGraphics/CGBase.h
CGRect
的内部定义如下:
/* Points. */
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
/* Sizes. */
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
/* Rectangles. */
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
在python中,我尝试用以下代码重新创建结构:
^{pr2}$这似乎奏效了。我可以检查它并给它赋值。在
myCoolRect = CGRect()
myCoolRect.origin.x = 0.0
myCoolRect.origin.y = 0.0
myCoolRect.size.width = 1000.0
myCoolRect.size.height = 1000.0
但是,如果我试图将这个结构传递给来自ApplicationServices
的函数,例如,CG.CGWindowListCreateImage()
,我会得到以下错误:
TypeError: depythonifying struct, got no sequence
我没有正确地设置结构。。?在
您可以在pyObjc中使用元组,只需(123456)而不是结构包(QQ,123456)
如果打开
CGBase.h
,您将发现:因此,}?在
CGFLOAT
可以是浮点型,也可以是双精度型,这取决于您运行的是32位还是64位。你正在使用浮动。也许您使用的是64位,但是使用float
而不是{相关问题 更多 >
编程相关推荐