Cairo 示例适用于 Python 2.7,但不适用于 Python 3

2024-01-25

最简单的例子。我们通过 Gtk 创建一个窗口,添加 Gtk.DrawingArea 的绘图区域,并在其上通过 Cairo 绘制文本。

Example:

#!/usr/bin/env python
from gi.repository import Gtk
import cairo

class MyWindow (Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title='MyWindow')

        darea = Gtk.DrawingArea()
        darea.connect('draw', self.on_draw)
        self.add(darea)

    def on_draw(self, widget, ctx):
        ctx.set_source_rgb(0, 0, 0)
        ctx.select_font_face("Sans", cairo.FONT_SLANT_NORMAL,
            cairo.FONT_WEIGHT_NORMAL)
        ctx.set_font_size(20)
        ctx.move_to(10, 20)
        ctx.show_text("Text...")

win = MyWindow()
win.connect('delete-event', Gtk.main_quit)
win.show_all()
Gtk.main()

对我来说,一切都在 Python 2.7 上完美运行,但只需将 Python 更改为 Python3,并且不再绘制文本。 哪里可能有问题?


遇到了同样的问题...事实证明,如果您丢失了一些包裹,您将不会收到任何投诉。

尝试 apt-get install python3-gi-cairo 并再试一次。为我工作(包括你的代码)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cairo 示例适用于 Python 2.7,但不适用于 Python 3 的相关文章

随机推荐

  • GCDAsyncSocket 服务器仅在第一次接收数据

    每次当我按下发送按钮时客户端都会发送消息 但服务器仅在第一次接收消息 服务器有什么问题 Server void viewDidLoad super viewDidLoad asyncSocket GCDAsyncSocket alloc i
  • AngularJS 在工厂和控制器之间跨模块共享数据

    我有一个 angularjs 应用程序 它有几个模块 主要模块如下所示 var app angular module mainMod apiService app controller MainCtrl function Socket sc
  • 如何使用 Terraform 的文件配置程序从本地计算机复制到虚拟机?

    我是 Terraform 的新手 到目前为止 我已成功在 Azure 上启动并运行了基本的 VM 加上资源管理器修剪 我想到的下一个任务是让 Terraform 将文件从本地计算机复制到新创建的实例中 理想情况下 我正在寻找一种解决方案 每
  • 无法连接到 localhost/127.0.0.1 android

    我是 android 开发的新手 并尝试通过改造库调用 android 中的本地 NET Web api 服务 在 IIS 上启动我的 Web api 后 我收到此错误无法连接到 localhost 127 0 0 1 android 当我
  • 使用 JavaScript 获取用户代理

    我想要一个可以获取用户的用户代理并将其支持到属性的脚本 我正在制作网站问题联系表 我通常需要知道用户使用的浏览器 如何检测用户代理字符串并将其支持为输入元素的值 我的 html 看起来像这样
  • 混合运行时是可行的解决方案吗?

    在我的公司 我们最近从 VC9 切换到 VC10 我们迁移了我们的项目 但是负责人告诉我们 我们必须在我们的生产机器上保留一些用 VC9 编译的基本通用 DLL 一段时间 这些 DLL 使用自定义结构 其中一些包含std vector st
  • 在 C++ 的条件或控制语句中声明和初始化变量

    在斯特鲁斯特鲁普的C 编程语言 特别版 第 3 版 Stroustrup 写道 在控制语句的条件中声明和初始化变量不仅是允许的 而且是鼓励的 他写道 他鼓励这样做 因为它将变量的范围缩小到仅需要它们的范围 所以像这样的事情 if int i
  • 依赖 Windows 句柄的类型作为指针可以吗?

    Windows 句柄有时很烦人 需要记得在之后进行清理 使用创建的笔和画笔执行 GDI 就是一个很好的例子 RAII 解决方案很棒 但是为每种不同类型的手柄制作一个完整的 五规则 RAII 类真的那么好吗 当然不是 我能看到的最好的结果是一
  • 为什么 gcc 4.1 + gcov 报告 100% 分支覆盖率,而较新的(4.4、4.6、4.8)报告“p = new class;”为 50%线?

    当 gcc 4 1 使用 gcov 下一行时 p new Class 据报告 分支覆盖率为 100 为什么使用 gcc 4 4 及更高版本同一行报告为 p new Class 50 branch coverage 我可以为较新的 gcc 版
  • 用一个简单的句子来说,出口和引用出口有什么区别?

    出口是否连接到子视图 引用出口是否连接到内容 是这样吗 术语 引用出口 是指引用或指向当前对象的另一个对象中的出口 举个例子 假设您有一个笔尖 其中有一个文件所有者和一个 UITableView 等 为了使 tableview 工作 它有一
  • 如何重新排列弦方程?

    我需要开发一个程序来求解线性方程 节目 首先读取一个整数n这是方程的数量 然后程序读取n包含方程的行 例如 程序的输入如下 3 2x1 3x2 4x3 16 1x1 2x2 1x3 8 3x1 1x2 2x3 13 任何操作都应该首先将每个
  • JavaScript 碰撞检测

    我正在尝试用 javascript 制作一个贪吃蛇游戏 但我在碰撞检测方面遇到了困难 到目前为止 我已经尝试了各种方法 但在绝望中 我决定存储每帧片段的所有位置 然后在制作下一帧动画之前检查是否有重复项 不幸的是 这种方法也没有被证明是成功
  • 列表列,将列表转换为字符串作为新列

    我有一个包含一列列表的数据框 可以使用以下命令创建 import pandas as pd lists 1 1 2 12 6 ABC 2 1000 4 z a create test dataframe df pd DataFrame fr
  • 我可以在redmine中创建跨项目源参考吗?

    如果您有两个以某种方式连接的独立项目 如何引用其他项目的来源 为了引用您自己的项目的源代码 您可以使用 source some file 但由于我想引用另一个项目中的代码 我的想法是我可以编写如下内容 other project sourc
  • Kotlin 中的 IntArray 与 Array

    我不确定有什么区别IntArray and an Array
  • C# 中的跨线程事件处理

    我正在使用一个框架 该框架在单独的线程中运行自己的事件调度程序 该框架可能会生成一些事件 class SomeDataSource public event OnFrameworkEvent void FrameworkCallback T
  • log4net %属性不起作用

    我有一个小型测试项目 代码如下 class Program static void Main string args log4net GlobalContext Properties logFileName log txt log4net
  • 如何使用 cURL 获取 JavaScript 加载的网页内容?

    我正在尝试从网站上获取分数表 问题是该网站正在使用显然加载的 javascriptdocument ready 因此 我似乎没有成功获取表格 我得到的只是该页面顶部的按钮 关于如何解决这个问题有什么建议或想法吗 cURL 只会为您提供页面的
  • quarto_render 从 .bat / .cmd 文件中损坏

    这有点复杂 但我认为其他人也可能遇到这个问题 四开本很棒 但一直面临一个问题 其中一个功能 quarto render 无法呈现通过 bat cmd 文件访问的脚本中的文档 如果我从 RStudio IDE 运行 R 脚本 没有问题 但通过
  • Cairo 示例适用于 Python 2.7,但不适用于 Python 3

    最简单的例子 我们通过 Gtk 创建一个窗口 添加 Gtk DrawingArea 的绘图区域 并在其上通过 Cairo 绘制文本 Example usr bin env python from gi repository import G