标签: pycairo

Python ctypes和librsvg出错

我正在尝试用Python的ctypes包装librsvg的基本功能,但我得到了一个段错误.

C:

// pycairo excerpt
typedef struct {
  PyObject_HEAD
  cairo_t *ctx;
  PyObject *base; /* base object used to create context, or NULL */
} PycairoContext;

// librsvg excerpt
RsvgHandle * rsvg_handle_new_from_file (const gchar * file_name, GError ** error);
// ...
gboolean rsvg_handle_render_cairo (RsvgHandle * handle, cairo_t * cr);
Run Code Online (Sandbox Code Playgroud)

Python ctypes:

from ctypes import *
from ctypes import util


librsvg = cdll.LoadLibrary('/brew/lib/librsvg-2.2.dylib')
libgobject = cdll.LoadLibrary('/brew/lib/libgobject-2.0.dylib')

libgobject.g_type_init()


class RSVGDimensionData(Structure):

    _fields_ = (
        ('width', c_int),
        ('height', c_int),
        ('em', c_double),
        ('ex', c_double)
    )

class …
Run Code Online (Sandbox Code Playgroud)

python ctypes cairo librsvg pycairo

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

"手动"在gtk.DrawingArea上调用公开事件

我正在创建一个用于数据可视化的小工具.GUI是使用Pygtk创建的,非常简单.在用户输入文件名后,他可以按"calc"按钮查看输出.输出由pycairo呈现并呈现在gtk.DrawingArea中.

该应用程序的工作原理如下:按下该按钮时,将处理该文件,并将其内容存储在特殊类中.这个类是一个自定义容器:它与gui一起实例化,无论是空的还是填充的.DrawingArea的expose事件链接到一个绘图函数,该函数读取容器并绘制其内容.只要容器为空,DrawingArea就会为空,但在点击calc并加载文件之后,应该用我的视觉效果填充DrawingArea.

问题是:除了更新DrawingArea之外,一切正常.我无法弄清楚如何手动调用曝光.按下calc后我必须调整窗口大小才能看到结果.

更具体一点:我从教程中复制了这段代码,不知道如何自己提供参数事件:

def do_expose_event(self,event):
    # Create the cairo context
    cr = self.window.cairo_create()

    # Restrict Cairo to the exposed area; avoid extra work
    cr.rectangle(event.area.x, event.area.y,
            event.area.width, event.area.height)
    cr.clip()

    self.draw(cr, *self.window.get_size())
Run Code Online (Sandbox Code Playgroud)

python gtk visualization pygtk pycairo

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

pip安装失败,出现FileNotFoundError:setup.py

运行pip install时,我遇到这样的错误:

$ pip install pycairo
Downloading/unpacking pycairo
  You are installing a potentially insecure and unverifiable file. Future versions of pip will default to disallowing insecure files.
  Downloading pycairo-1.10.0.tar.bz2 (246kB): 246kB downloaded
  Running setup.py egg_info for package pycairo
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
    FileNotFoundError: [Errno 2] No such file or directory: '/home/naught101/.virtualenvs/virtualenv-3/build/pycairo/setup.py'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

FileNotFoundError: [Errno 2] No …
Run Code Online (Sandbox Code Playgroud)

python pip pycairo

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

激活 graph_tool 的 cairo 相关功能

我已经使用图形工具库有一段时间了,到目前为止我还没有真正使用过它的大部分绘图功能。今天,当尝试使用graph_tool.draw.graph_draw时,我意识到我最初配置的 graph-tool 没有cairo

./configure --disable-cairo
Run Code Online (Sandbox Code Playgroud)

这正是 graph_draw 使用的图形库。如果我现在安装 cairo,有没有办法激活依赖 cairo 的 graph_tool 功能,而无需删除并重新安装整个 graph_tool 模块?这将节省几个小时的重新安装时间。(在我的机器上制作过程大约需要 3 个小时)。

python cairo pycairo graph-tool

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

使用pyCairo旋转图像

我无法理解如何使用pyCairo简单地旋转图像......

基于这个例子,这就是我所做的:

image_surface = cairo.ImageSurface.create_from_png(image_path)
width = image_surface.get_width()
height = image_surface.get_height()

context = cairo.Context(cairo.ImageSurface (cairo.FORMAT_ARGB32, width, height))

context.translate(width*0.5, height*0.5)
context.rotate(45.0*math.pi/180.0)
context.scale(1.0, 1.0)
context.translate(-width*0.5, -height*0.5)

context.set_source_surface(image_surface, 0, 0)
context.paint()

image_surface.write_to_png(output_path)
Run Code Online (Sandbox Code Playgroud)

输出图像与初始图像相同.我错过了什么?

python cairo pycairo

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

python pyinstaller 未找到名为“cairo”的库

matplotlib在编译依赖于和pyside2with 的应用程序时,pyinstaller我收到这些错误

环境

 PyInstaller: 3.5
 Python: 3.7.5
 Platform: Windows-10-10.0.14393-SP0
Run Code Online (Sandbox Code Playgroud)

错误

    31256 INFO:   Matplotlib backend GTK3Agg: ignored
    Traceback (most recent call last):
    File c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site- 
    packages\matplotlib\backends\backend_cairo.py, line 14, in <module>
    import cairo
    ModuleNotFoundError: No module named cairo

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "<string>", line 12, in <module>
    File "c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site- 
    packages\matplotlib\backends\backend_gtk3agg.py, line 4, in <module>
    from . import backend_agg, backend_cairo, backend_gtk3
    File "c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site- 
    packages\matplotlib\backends\backend_cairo.py", line 20, in <module> …
Run Code Online (Sandbox Code Playgroud)

windows pyinstaller cairo pycairo python-3.x

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

在 Linux 上安装 pycairo

所以我有 venv 我想使用尚未安装的 pycairo 模块

(venv) command$ python -m pip install pycairo

Collecting pycairo
  Using cached https://files.pythonhosted.org/packages/3c/1a/c0478ecab31baae50fda9956547788afbd0ca563adc52c9b03cab30f17eb/pycairo-1.18.2.tar.gz
Installing collected packages: pycairo
  Running setup.py install for pycairo ... error
    Complete output from command /home/user/Code/manim/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-gtt_9z57/pycairo/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-9arnuyr8/install-record.txt --single-version-externally-managed --compile --install-headers /home/user/Code/manim/venv/include/site/python3.7/pycairo:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.7
    creating build/lib.linux-x86_64-3.7/cairo
    copying cairo/__init__.py -> build/lib.linux-x86_64-3.7/cairo
    copying cairo/__init__.pyi -> build/lib.linux-x86_64-3.7/cairo
    copying cairo/py.typed -> build/lib.linux-x86_64-3.7/cairo
    running build_ext
    Package cairo was not …
Run Code Online (Sandbox Code Playgroud)

python pycairo

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

在ubuntu下安装pycairo

出于某种原因,我无法让python找到cairo.

当我做./waf配置我得到了

Setting top to                           : /home/user/pycairo/py2cairo-1.10.0
Setting out to                           : /home/user/pycairo/py2cairo-1.10.0/build_directory
./configure()
Checking for 'gcc' (c compiler)          : ok
Checking for program python              : /usr/bin/python
Checking for python version              : (2, 7, 2, 'final', 0)
Checking for library python2.7           : yes
Checking for program python2.7-config    : /usr/bin/python2.7-config
Checking for header Python.h             : yes
Checking for program pkg-config          : /usr/bin/pkg-config
Checking for 'cairo' >= 1.10.0           : yes
Configuration:
PREFIX                                   : /usr/local
LIBDIR                                   : /usr/local/lib
Run Code Online (Sandbox Code Playgroud)

接下来我跑了./waf install.

试着

import cairo
ImportError: …
Run Code Online (Sandbox Code Playgroud)

python cairo pycairo

3
推荐指数
2
解决办法
2万
查看次数

如何安装 python 开罗?

我是 python3 的新手。我已经创建了虚拟环境。我尝试使用 pip 命令安装 pycairo 包。我需要安装 python cairo。请参阅以下信息

pip install git+http://anongit.freedesktop.org/git/pycairo
Downloading/unpacking git+http://anongit.freedesktop.org/git/pycairo
  Cloning http://anongit.freedesktop.org/git/pycairo to /tmp/pip-0c_foz-build
  Running setup.py egg_info for package from git+http://anongit.freedesktop.org/git/pycairo
    cairo >= 1.10.2  Successful

Installing collected packages: pycairo
  Running setup.py install for pycairo
    cairo >= 1.10.2  Successful
    building 'cairo._cairo' extension
    gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/python3.2mu -c src/cairomodule.c -o build/temp.linux-i686-3.2/src/cairomodule.o
    src/cairomodule.c:22:20: fatal error: Python.h: No such file or directory
    compilation terminated.
    error: command 'gcc' failed …
Run Code Online (Sandbox Code Playgroud)

python pycairo python-3.x

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

如何在 Gtk.drawingarea 上叠加透明按钮

我创建了一个 Gtk.grid,其中包含一堆可在网格周围调整大小和拖动的按钮。

我还创建了一个 Gtk.drawingarea 来绘制网格线。我想让我的按钮像这样透明:

Gtk.Button.set_property("opacity", 0.3)
Run Code Online (Sandbox Code Playgroud)

这成功地使按钮透明;但是,它不允许我看到按钮后面的线条网格。

我知道我用 Gtk.Overlay 小部件正确地覆盖了它们,因为不直接在按钮后面的部分线被正确显示。

我的问题是,我怎样才能看到透明按钮后面的其余绘图区域?我尝试将容器设置为透明,设置 Gdk.Window 透明度,但没有任何效果。这只是 Gtk3 无法实现的吗?

cairo pygobject pycairo gtk3

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