问题标签 [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 回答
2767 浏览

python - 如何取消设置由 python gobject.timeout_add 设置的计时器?线程?

我想在一个线程中设置计时器并在我想取消设置由 gobject.timeout_add 设置的计时器时终止该线程,这是一个好方法吗?

基本上我想每 180 秒运行一次函数,但我希望能够随时停止它(从另一个函数调用)。如何正确实现这一目标?

我读过杀死线程是不好的!像这样的简单任务有多糟糕?

0 投票
1 回答
243 浏览

gtk - 如何从 Gdl.Dock 中删除 Gdl.DockItem?

我使用 GObject 自省在 Python 中使用 libgdl。有人知道如何从 Gdl.Dock 中删除 Gdl.DockItem 吗?我试过了:

而且我还尝试过销毁停靠项和它的子小部件。似乎找不到这样做的例子。

0 投票
1 回答
813 浏览

python - 有没有办法对用 Python 编写的 Gtk/GLib 代码进行单元测试?

我正在使用 PyGObject(新的基于自省的 Gtk 绑定)编写一个中小型 GUI 应用程序。我从一个合理的测试套件开始nose,它能够通过简单地导入模块并调用各种函数并检查结果来测试我的应用程序的大部分功能。

然而,最近我开始利用一些 Gtk 特性,比如GLib.timeout_add_seconds一个相当简单的回调机制,在计时器到期后简单地调用指定的回调。我现在自然面临的问题是,当我使用应用程序时,我的代码似乎可以工作,但是测试套件的封装很差,所以当一个测试检查它是否以干净状态开始时,它发现它的状态已经被践踏了由不同测试注册的回调。具体来说,测试成功检查没有加载文件,然后加载一些文件,然后检查文件在加载后没有被修改,测试失败!

我花了一段时间才弄清楚发生了什么,但基本上一个测试会修改一些文件(它会启动一个计时器)然后关闭它们而不保存,然后另一个测试会重新打开未修改的文件并发现它们已被修改,因为计时器结束后,回调更改了文件。

我已经阅读了 Python 的reload()用于重新加载模块的内置函数,希望我可以让它卸载并重新加载我的应用程序以重新开始,但它似乎并没有工作。

恐怕我可能不得不求助于将应用程序作为子进程启动,对其进行修补,然后结束子进程并在需要保证新状态时重新启动它。是否有任何测试框架可以使这变得容易,特别是对于 pygobject 代码?

0 投票
1 回答
731 浏览

python - PyGobject 应用程序图标

可能重复:
如何将图标添加到 ubuntu 应用程序

我正在尝试为 PyGObject 应用程序创建一个基本应用程序代码。我不确定如何更改应用程序图标。

我有这个代码。

我检查了一些示例代码,但没有找到方法。任何指针?

0 投票
3 回答
899 浏览

python - 带有 PyGObject 内省 Gtk+ 3 的 GenericTreeModel?

我正在尝试在 Python3 中基于 GenericTreeModel 编写自己的 Gtk+3-TreeModel,但我出现了这个错误:

AttributeError:“gi.repository.Gtk”对象没有属性“GenericTreeModel”

GenericTreeModel 是否已重命名?

提前致谢。

0 投票
1 回答
3889 浏览

python - 在 Gtk3 上使用 PyGObject 的 Webkit 线程

我正在尝试在与 gtk 的主线程不同的线程上加载 webkit 视图。

我看到了PyGTK、Threads 和 WebKit的例子

我稍微修改一下以支持 PyGObject 和 GTK3:

结果是一个空窗口,并且永远不会执行“睡眠后”打印。idle_add 调用不起作用。唯一的工作部分是在主线程上注释的调用。

0 投票
2 回答
3340 浏览

python - Python 和 Gtk - 正在使用哪个 GTK 版本?

那是我的代码,我怎么知道正在使用哪个版本的 Gtk。

谢谢!

0 投票
1 回答
11248 浏览

gtk3 - 如何在 Gtk+3 中设置背景颜色 GtkBox?

我在 GTK+3 中创建应用程序,我想更改背景颜色,GtkBox但不能在这里代码:

0 投票
1 回答
1824 浏览

python - PyGObject Gtk.Entry 更改进度条颜色

我想更改Gtk.Entry小部件进度条的颜色,但无法使用Gtk.Widget.override_color(). 我怎样才能做到这一点?

0 投票
1 回答
5445 浏览

gtk - GTK+ 3.0:如何将 Gtk.TreeStore 与自定义模型项一起使用?

我正在尝试在 Python 中开发 GTK 应用程序,但我真的坚持正确使用gtk.TreeStore. 我的主要问题:我已经解析了一些 JSON,并且我有自己的数据结构,它基本上是一个 Python 列表和两种对象:一种表示项目集合(集合不能嵌套),另一种表示项目(它可能出现在列表中以及集合中)。

我已经熟悉 a 的基本用法TreeStore并设法在屏幕上正确呈现项目。我不知道如何处理树存储只能存储 gobject 类型的事实(此时我不确定,因为我对 gobject 类型系统了解不多)。C 的文档列出了以下(PixBuf 除外)可以插入并自动映射到 Python 数据类型的基本类型:

例如,gtk_tree_store_new(3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF);将创建一个新的 GtkTreeStore,其中包含三列,分别为 int、string 和 GdkPixbuf 类型。

此外,它说您可以插入任何GType. 文档中的链接直接指向本段:

一个数值,表示已注册类型的唯一标识符。

我对该主题的研究到此结束,谷歌发现大部分是 GTK 2.x 教程,除了等之外,没有关于插入其他数据类型str的内容int
问题:

  • 是否可以实现新的 GType(或任何其他可以在树存储中插入自定义数据的接口)以及如何实现?
    我已经尝试过,GObject但没有帮助。

  • 如何摆脱同时保留两个数据结构?
    即我的解析结果和 Treestore 中的重复信息。

  • 如何处理混合内容?
    就我而言,我有具有不同附加信息的集合和项目(在树视图中镜像为有或没有子节点的节点)。

如果上述问题解决了,我在处理选择时也摆脱了这个问题:很难匹配一个简单的类型str或者int匹配我之前插入的一个项目。这样的属性必须是一个键,你仍然会用解析结果搜索列表,这是无效的。

先感谢您!

与问题没有直接关系的其他信息:


TreeModel在我阅读GTK 2 教程之前,我认为实现自定义可能是一个可行的挑战:

然而,所有这些都是有代价的:你不可能在不到一千行的时间内编写一个有用的自定义模型,除非你去掉所有的换行符。编写自定义模型并不像听起来那么困难,而且值得付出努力,尤其是因为如果您有大量数据需要跟踪,它会产生更清晰的代码。

这仍然有效吗?


我刚刚遇到http://www.pygtk.org/articles/subclassing-gobject/sub-classing-gobject-in-python.htm这有帮助吗?与 PyGTK 2.0 一样多的资源。已弃用。