问题标签 [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.
python - 如何在 pygtk 中创建新信号
我创建了一个 python 对象,但我想在它上面发送信号。我让它继承自 gobject.GObject,但似乎没有任何方法可以在我的对象上创建新信号。
c - 学习 GObject 和 Glib 的材料
我对 C. 很满意,但需要学习GObject
和Glib
为gstreamer
. 我在网上找到的只是 Gobject 参考手册。它很好,但正在寻找 Gobject/Glib 的教程,因为主要关注的是 gstreamer。
所以请分享任何其他资源来学习 glib 和 gobject。
python - gobject io 监控 + 非阻塞读取
我io_add_watch
在 python 中使用监视器时遇到了问题(通过 gobject)。我想在每次通知后对整个缓冲区进行非阻塞读取。这是代码(稍微缩短了一点):
这是诀窍 - 当我在没有激活调试输出的情况下运行程序时,我没有got_message
接到电话。当我先向stderr写很多东西时,问题就消失了。如果除了这段代码中可见的打印之外我不写任何东西,我就不会收到 stdin 消息信号。另一个有趣的事情是,当我尝试在启用了 stderr 调试但通过strace
(检查是否有任何我错过的 fcntl / ioctl 调用)的情况下运行相同的应用程序时,问题再次出现。
简而言之:如果我先在没有 strace 的情况下向 stderr 写了很多东西,那就io_watch
可以了。如果我用 strace 写了很多,或者根本不写都io_watch
行不通。
“其他一些初始化”部分需要一些时间,所以如果我在看到“钩子 2”输出之前输入一些文本,然后在“就绪”之后按“ctrl+c”,则get_message
调用回调,但读取调用会抛出 EAGAIN,所以缓冲区似乎是空的。
与标准输入相关的 strace 日志:
有人对这里发生的事情有一些想法吗?
编辑:另一个线索。我试图重构应用程序以在不同的线程中进行读取并通过管道将其传回。它“有点”有效:
令人惊讶的是,如果我只是将相同的文本放入新管道中,一切都会开始工作。问题是:
- 第一行根本没有“注意到” - 我只得到第二行和以下行
- 丑陋
也许这会给其他人一个关于为什么会发生这种情况的线索?
glib - 在Gobject中,如何覆盖父类的方法属于一个接口?
GObject 类 A 实现接口 IA,B 是 A 的派生类。 B 如何覆盖作为接口 IA 一部分的 A 的方法?
或者,这在 GObject 中是否可行?
我知道如何重写父类方法,但是当继承遇到接口时,事情似乎更复杂了。
非常感谢!
python - PyGObject 的替代品?
有没有人可以替代使用 PyGObject?我似乎无法让它在 Mac OS X 中运行。我正在尝试使用 papyon,如果 GObject 不在身边,它会非常失败。
c - 我见过的最奇怪的错误,又名)*
我正在编写这个很棒的应用程序,至少我认为它很棒,在 C 中与 GObject 的完美融合,过了一段时间我开始遇到这个非常非常奇怪的错误。我也相信已经注意到它并不总是出现。然而,这可能只是 IDE 的错。无论如何...
显然,GCC 抱怨:在 '*' 标记之前预期的 ')';这发生在头文件中。
这是相同的头文件。
据我所知,这来自CharcoalApp *app
该函数的参数。
因为我无法真正理解为什么会发生此错误,所以我将包含该CharcoalApp.h
文件。global.h
是一个非常简单的头文件,承载了主要的依赖,主要有GLib、GObject、GThread、GTK+、WebKit等。
木炭应用程序.h
谢谢您的帮助!
ruby - Ruby 中的 GObject 子类化,用于 GtkTreeView 中的自定义 CellRenderer
我正在尝试在 Ruby/GTK 中实现一个定制的 CellRenderer,我已经找到了这个建议:
但是,当我尝试以下操作时:
这些信号永远不会被调用。我想这与 Ruby 如何连接到 GObject API 有关,但老实说,我不知道这一切是如何工作的。
我想要做的是子类 CellRendererText,并覆盖一个方法,在这个例子中是 get_size,它被 TreeView 调用。但是,我认为因为 CellRendererText 是一个 C 模块,而不是一个 ruby 类,所以我不能在不让系统真正意识到这一点的情况下覆盖它的方法。
另外我是CellRenderers,需要分配一个TreeViewColumn,然后调用get_size等方法。
据我所知,PyGtk 中存在类似的问题,通过添加一个GenericCellRenderer
类以某种方式规避了它:
python - GObject.add_emission_hook 用法
在最近关于 SO的问题之后,我被指示使用GObject 的“add_emission_hook” , 但我似乎找不到使用示例。
请问有谁可以分享一下吗?
python - gobject的pydev问题
似乎带有 Python 2.6 的 Eclipse (3.5.1) 上的 Pydev (1.5.4) 无法正确交叉引用 package gobject
。Puttingimport gobject
工作正常,但不仅如此(例如,class X(gobject.GObject)
导致 Pydev 报告“未解决的引用”错误。
可能是什么问题呢?
请注意,我使用的所有其他软件包都不会触发此错误。
signals - g_signal_connect_swapped() 有什么作用?
根据 GObject 参考
g_signal_connect_swapped(实例,详细信号,c_handler,数据);将 GCallback 函数连接到特定对象的信号。调用处理程序时发出信号并交换数据的实例。
我不太明白这意味着什么。这是否意味着data
将指向指向的对象instance
并将instance
指向指向的对象data
或者我在这里犯了错误?
如果是前者,那么这背后的逻辑是什么?