小编Dav*_*nce的帖子

python'import'可以扩展到zip以外的其他存档类型吗?

zipimport标准导入会自动使用该模块来处理.zipsys.path元素.

是否可以添加钩子来支持其他文件类型?例如一个处理程序.tar.gz

例如,如果sys.path包含/path/to/archive.tar.gz或者/path/to/archive.xyz可以提供处理程序来打开和读取.tar.gz.xyz文件.

python python-2.7

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

如何在重载==时强制"语句无效"警告

在以下示例中:

class Test

{
public:
    Test(int _value) { value = _value; };
    const bool operator==(int _value) const { return value == _value; };
private:
    int value;
};

int main(void)
{
    int a;
    a == 1;

    Test b(1);
    b == 1;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

汇编给出以下内容:

$ g++ -Wall -pedantic -o test test.cc
a.cc: In function ‘int main()’:
a.cc:13:7: warning: statement has no effect [-Wunused-value]
     a == 1;
     ^
Run Code Online (Sandbox Code Playgroud)

这很好,因为它已经警告我发生错误并输错了== for =

但我的Test课程也是如此.我如何标记类或者运算符的定义==让编译器用"b == 1"行的另一个"语句无效"来警告我?

c++ operator-overloading

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

将文本渲染到kivy画布

我试图在一个kivy'画布'中绘制我自己的图形.现在我有一个红色或绿色矩形,每秒更改一次颜色,但我想添加一个更改文本标签.

经过一点搜索后,似乎没有可以添加到画布上的"文本"指令.我找到了一些使用Label()小部件以及画布说明的引用,但这似乎并不理想,而且我似乎无法让它多次呈现.

这是我现在的目标:

class HVObject(BoxLayout):
    def __init__(self, **kwargs):
        BoxLayout.__init__(self, **kwargs)
        self.colour = 1
        self.label = Label()
        self.render()
        self.add_widget(self.label)

        self.bind(size=self._update_rect, pos=self._update_rect)
        Clock.schedule_interval(self.callevery, 1)

    def render(self):
        self.canvas.clear()
        self.rect = Rectangle(size=self.size, pos=self.pos)
        self.canvas.add(Color(1-self.colour, self.colour, 0, 1))
        self.canvas.add(self.rect)
        self.label.text = "COL %d" % self.colour
        self.canvas.ask_update()

    def callevery(self, x):
        self.colour = 1-self.colour
        self.render()

    def _update_rect(self, instance, value):
        self.rect.pos = instance.pos
        self.rect.size = instance.size
        self.label.pos = instance.pos
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来达到我需要的效果?

谢谢

python text canvas kivy

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

如何从C使用libzip在内存中创建一个zip文件?

我正在尝试使用libzip在内存中直接创建一个zip文件,而不是在磁盘上创建一个zip文件。目前,我的代码非常基本,因为我无法从zip_source_buffer创建必要的zip_t结构:

#include <stdio.h>
#include <string.h>
#include <zip.h>

int main(int argc, char *arrv[])
{
    char buffer[65536] = {};
    zip_error_t error;
    zip_source_t *zs = zip_source_buffer_create(buffer, sizeof(buffer), 0, &error);

    int err = zip_source_begin_write(zs);
    printf("%p %d '%s'\n", zs, err, zip_error_strerror(&error)); 
    zip_error_fini(&error);

    zip_t * zip = zip_open_from_source(zs, ZIP_CREATE, &error);
    printf("%p '%s'\n", zip, zip_error_strerror(&error)); 
    zip_error_fini(&error);
}
Run Code Online (Sandbox Code Playgroud)

代码可以编译并运行,但是会引发错误:

$ ./ztest 
0xdd50a0 0 'No error'
(nil) 'Not a zip archive'
Run Code Online (Sandbox Code Playgroud)

尚不清楚是否需要begin_write(),但它不会产生错误,没有它我也会得到相同的结果。

我想念什么?谢谢

c libzip

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

标签 统计

python ×2

c ×1

c++ ×1

canvas ×1

kivy ×1

libzip ×1

operator-overloading ×1

python-2.7 ×1

text ×1