问题标签 [pygobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5946 浏览

python - 在 PyGobject (python3) 中绘图

我正在尝试使用 PyGObject 和 python 3 编写简单的图形编辑器。我需要使用鼠标绘制不同颜色和宽度的线条。我发现了很多这样的例子,但没有比更复杂的了。

如何在“绘制”事件之间保存绘制的图像?是否有增量绘图方式,或者我是否必须在每个“绘图”事件上重绘窗格?我发现我可以保存路径,但是如何保存画线的宽度和颜色?有没有办法在“绘制”回调之外创建图像并且只在回调中应用(绘制)它?

是我现在所拥有的。

对不起,我的英语不是我的母语。

0 投票
2 回答
2303 浏览

python - 转换 PIL GdkPixbuf

如何在 pixbuf 中转换 PIL 图像?我尝试更改许多示例但没有解决方案

错误

我使用 Pygobject https://live.gnome.org/PyGObject

0 投票
1 回答
1953 浏览

python - 在 Gtk 3 中向工具按钮添加图标

有没有办法将图标添加到 Gtk.ToolButton(Gtk3 using PyGi for Python)以添加到 GTK+3 工具栏?

下面是我的代码:

注意:该get_resource()方法挖掘资源路径的本地工作文件夹,并且假定此方法在此上下文中工作。

我使用 PyGi 尝试了上面编写的代码。图像文件有效,一切正常,但图像没有出现。

0 投票
1 回答
557 浏览

python - 在由 RadioMenuItems 组成的菜单中(错误地)选择了多个项目

在我的小型 PyGObject/GTK3 应用程序中,我尝试创建一个由RadioMenuItems 组成的(子)菜单。

我在主窗口中创建如下菜单__init__

然后在button_press_event处理程序中使用

当我第一次打开菜单时,菜单项“2”是唯一选择的。当我然后 - 例如 - 选择菜单项“3”并再次打开菜单时,菜单项 2 和 3 都被选中。我究竟做错了什么?

0 投票
1 回答
376 浏览

python - 如何将 Gtk.StatusIcon 设置为文本

我想用自定义文本创建一个 Gtk.StatusIcon 。理想情况下,我想将其附加到现有图像中,但纯文本也可以。我怎样才能做到这一点?

我看过一些关于获取 Gtk.Label 的 pixbuf 的帖子,但这些方法似乎已从 Gtk3 中删除(pixbuf_get_from_drawable)

0 投票
1 回答
2480 浏览

python - 在 PyGObject 中使用 GtkSourceView 从 Glade 加载 GUI

我正在尝试使用在 PyGObject 中具有 GtkSourceView 小部件的 Glade 文件。我写了一个关于如何开始在 Glade 中使用新的 GtkSourceView 3.0 的小指南:http: //cjenkins.wordpress.com/2012/05/08/use-gtksourceview-widget-in-glade/

问题是当我想从 PyGObject 加载 Glade 时:

当我运行该文件时,出现此错误:

Glade 文件 (test.glade) 只是一个带有 GtkSourceView 小部件的窗口:

我现在不知道如何解决这个问题。我想我需要在调用 add_from_file() 之前注册某种类型,不是吗?欢迎任何想法。

我正在使用:

  • Ubuntu 精确 12.04
  • 林间空地 3.12.0
  • libgtksourceview 3.0
  • gtk+ 3.0

亲切的问候

0 投票
2 回答
971 浏览

python - 迁移到 pygobject、glade 和 gtk3 时使用条目组合框

自 3 个月以来,我使用 glade 和 pygtk 在 python 中进行开发,但即使在我有时间习惯它之前,它已经过时了。

使用 Archlinux,我的系统不断更新,所以我不得不使用 gtk3,即使我发现它与 gtk2 相比有点缺乏功能。

所以我决定改用pygobject。不幸的是,文档并不完整。

我成功地将我的 glade 文件和我的 python 代码升级到了新系统,但仍然存在一个错误。

在我的一个程序中,我有一个带有条目的组合框。我使用调用 get_active_text() 方法来获取条目的内容,无论它是从组合框中选择的还是由用户输入的。

这种方法不再存在(我想,因为它给了我一个错误)所以我改用它:

如您所见,旧代码已被注释。

此代码有效,但我有一个奇怪的问题:我无法使用该条目!

我可以从组合框中选择文本,但该条目不可用。我可以选择,但我不能输入它。

这是我需要在某处激活的新行为吗?使用gtk2版本的程序,我没有任何问题。

这是我的林间空地文件中描述组合框条目的部分:

我创建了一个列表存储,其中包含一列 gchararray 类型的文本。单元格由 GtkCellRenderer 渲染(但未定义 cellrenderer 的属性“文本”,因为如果我将其定义为 0(gchararray),我会得到两次文本!)

我认为添加入口缓冲区会有所帮助,但它不会改变任何东西。

编辑:我找到了解决方案:can_focus 对于嵌入式条目是错误的。现在它可以工作了,不需要入口缓冲区。

我在发布之前找到了解决方案,但我发布它以防其他用户也有这个问题。

0 投票
2 回答
1940 浏览

python - Gtk.Treeview 通过信号和代码取消选择行

我正在使用 PyGObject 但我认为这是一个可以适用于所有 GTK 的问题,所以如果有人知道如何使用 C 或任何东西也应该在 python 中工作。

我有两个树视图,活动和非活动,我从 Sqlite 数据库加载数据,我可以交换和拖放项目从一个到另一个。这只是一个美学的事情,如果我单击一个树视图上的一个项目,我希望取消选择另一个之前选择的项目。

似乎没有人必须做类似的事情,因为我在网上没有找到任何关于它的信息。

0 投票
1 回答
454 浏览

python-3.x - 在 PyGobject 中动态调整 GtkLayout 的大小

我正在寻找一种方法来自动“缩放以适应” GtkLayout 的内容,具体取决于它允许占用的空间量。

这是我的解决方案:

不幸的是,这会导致每次调整窗口大小时都会调用 draw() 两次,这很慢,一旦我实际上需要在布局中绘制一些东西。

这个问题的正确解决方案是什么?

最好的问候,
Fabian Henze

解决方案:我前段时间找到了解决方案。它在我项目中。我没有时间从中提取一个最小的例子。如果有人愿意这样做,我很乐意接受它作为答案。

0 投票
1 回答
1221 浏览

python - 如何在 Python 中使用 Gtk3 GtkTreeRowReference

我试图调用 Gtk3 的GtkTreeRowReference()函数但没有成功。我正在尝试ListStore使用关联的 TreeView 选择设置为 MULTIPLE 模式从 a 中删除多条记录。我想为选择中指向TreeRowReference的每个项目保存一个并使用它们来删除项目,因为这些路径应该随着选择中较早到达的 ListStore 项目被删除而更新。我在 PyGtk 2 中找到了很多关于 using 的参考,PyGObject 的教程提到了它们的使用,但没有给出实际示例。我尝试了很多方法来调用但没有成功。例如:ListStoreListStoreTreeRowReferencesGtkTreeRowReference()

产生此致命错误消息:"TypeError: function takes at most 0 arguments (2 given)"当我的程序运行时Gtk.TreeRowReference。选择中的行已经包含对 的引用ListStore,因此仅使用选择行作为参数再次尝试,但这只是抱怨该函数仍然坚持使用 0 个参数,而我曾尝试向其传递 1 个参数。

我也尝试过这样的事情:

这些努力激怒了 Python 抱怨对"AttributeError: 'ListStore' object has no attribute 'GtkTreeRowReference'."的调用变体TreeRowReferenceGtk_TreeRowReference并且其他几个变体产生了相同的错误消息。

谁能给我一个关于如何Gtk.TreeRowReference在 PyGObject/Gtk3 中使用的线索?作为一个相对较新且经验不足的 Python 程序员,也是 Gtk 的新手,毫无疑问,我忽略了一些非常明显的东西,但即使经过大量互联网搜索,我也感到难过。