问题标签 [gobject]

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 投票
2 回答
1517 浏览

python - gobject 和 subprocess.Popen 在 GTK GUI 中进行通信

我正在尝试使用 gobject 来允许 Popen 进程和 GTK GUI 之间的通信。

受此启发: https ://pygabriel.wordpress.com/2009/07/27/redirecting-the-stdout-on-a-gtk-textview/#comment-156

我实现了类似的东西:

http://hartree.altervista.org/files/command-textview.py

但我注意到即使 Popen 进程终止,gobject 也会使用大量 CPU 周期。只需运行上面的脚本并观察 Ubuntu 系统监视器。

在与“pty”一起工作后,我想出了这个:

我的问题是:

  • pty 是个好主意吗?它也可以用于Windows吗?

  • 是否可以避免使用 pty 而只使用 stdout 而没有高 CPU 使用率问题?

  • 如果您第一次运行此脚本,它似乎会缓冲 txt 输出并给出不完整的输出。

感谢您的帮助

0 投票
1 回答
399 浏览

c - 将结构中的结构传递给 GSourceFunc 的最佳方法

哪种方式最好让 S 成为 GSourceFunc?或者两者都不是?

或者像这样,

我尝试了其他方法,但无法使它们起作用。clutter_add_timeout 需要将指针作为参数。

0 投票
2 回答
501 浏览

gtk - 当有这样的道具时,为什么vala会抱怨丢失的财产

我正在使用 gtk 3 和 vala 开发一个 GUI 应用程序。这是我来自 MainWindow::MainWindow() 的源代码

valac 给出了这个错误:

看着这个,说别的。我也试过

这给出了这个输出:

如果我做对了 Gtk.Application 具有所有这些属性,那么为什么 valac 会给我这个错误?

我正在使用 valac 0.14.2.Ubuntu 12.04。

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 一样多的资源。已弃用。

0 投票
2 回答
854 浏览

introspection - Vala VAPI 和 GObject Introspection 有什么关系?

首先,一些上下文:我是一名 Python 开发人员,他使用 PyGObject 编写了一个中型应用程序,利用 GObject Introspection 来访问 GSettings 等内容。我的一些 Python 对象实际上是 GObject.GObject 的子类,所以我是相当广泛地使用 GObject。

最近,某个库引起了我的注意,它在 GObject 中包装了一个 C 库(gexiv2,由 Shotwell/Vala 使用),但是它目前不支持自省。我有兴趣为 gexiv2 添加内省支持,以便我可以从 Python 访问它,但我什至不知道从哪里开始讨论这个主题。

当我研究自省和 VAPI 时,我看到很多文档都提到了 VAPI 可以从自省注释自动生成的事实......但是一个已经有 VAPI 但没有自省的项目呢?是否可以在给定 VAPI 的情况下自动生成自省注释?

谢谢。

0 投票
2 回答
17398 浏览

glib - GLib 和 GObject 到底是什么?

我一直在研究python-mpdor的源代码,它提到它是

基于 gobject,便于事件处理(在高级客户端类中)。

有人可以简单地向我解释一下究竟是什么GlibGObject它们如何相互作用,以及它在事件处理中扮演什么角色。

我尝试搜索GlibGObject但没有找到任何基本解释。我发现的所有解释都是非常技术性的,技术性我的意思是不适合初学者。

另外,有人可以指出一些关于和的初学者教程/文章。GlibGObject

0 投票
1 回答
197 浏览

gtk - 为什么我的工具项的代理菜单项没有被使用?

ToolItem我想在工具栏的溢出菜单中显示一个自定义菜单项。这似乎是该set_proxy_menu_item方法的目的。但是,当我使用这种方法设置代理菜单项时,它对溢出菜单没有影响。它仍然使用默认菜单项(使用 ToolItem 的名称作为标签)。

这是一个重现问题的简单项目(在 Vala 中)。它创建了一个小窗口,其中包含一个带有 3 个按钮的工具栏。窗口应该足够小,除了这些按钮中的一个之外,所有按钮都在溢出菜单中。

当我查看溢出菜单时,我应该看到“代理”作为edit_button. 相反,我看到“编辑”。

我究竟做错了什么?

0 投票
1 回答
272 浏览

python - GObject.add_emission_hook 只工作一次

我想使用 GObject.add_emission_hook 来连接以捕获类的所有实例的信号。它似乎有效,但只有一次。在下面的最小示例中,“收到的信号”仅打印一次,无论单击其中一个按钮多少次。为什么会这样?我如何在每次点击时收到信号?

当然,在我的应用程序中,事情更复杂,接收器(这里是 Foo 类)不知道发出信号的对象。因此,无法连接到对象本身的信号。

0 投票
5 回答
6808 浏览

python - PyGObject GTK+ 3 - 文档?

PyGObject 似乎没有真正的文档。本教程非常接近。我整个早上都在苦苦挣扎,只是想找到Gtk.Window构造函数接受的参数的描述。似乎我不能在 Python 中做太多反思,因为 PyGObject 中的所有内容都是动态生成的。

我只想知道我可以将哪些参数传递给这个构造函数!在 GTK+ 3 文档中似乎没有此对象的等效项,并且阅读源代码以找出绑定已被证明是一项极其艰巨的任务。有任何想法吗??

0 投票
1 回答
1057 浏览

python - GtkSourceView 使用 Gobject Introspection 滚动到行 [python]

我已经使用 Gobject Introspection 成功创建了一个 python GTK 应用程序,并在 GTKSourceView Widget 中打开了一个源文件。

当用户单击按钮时,我试图滚动以将特定行(第 150 行)放置到屏幕的中心。

我已经阅读了如何(以编程方式)滚动到 gtktextview/gtksourceview 中的特定行

以及围绕 GtkSourceViews、GTKTextView 和这两者的缓冲区对象的文档(据我了解,sourceview 继承自 textview)

我尝试使用以下方法:

- 在第 150 行获取一个迭代器,然后使用 scroll_to_iter() 方法 - 在第 150 行获取一个迭代器,在迭代器处做一个标记,然后使用 scroll_to_mark() 方法

我知道迭代器和标记是正确的,因为我可以成功使用 place_cursor(iter) 方法,并且它成功地将标记放置在第 150 行的末尾,但是使用给定方法滚动到标记或迭代器什么都不做。

滚动到标记方法不返回值,但迭代器方法返回 false。

谁能建议一种方法来实现这一目标?

我的测试代码如下: